Merge storm-2145 dev into lindenlab branch parented from viewer-release
commit
eb8eaa58a4
|
|
@ -219,6 +219,7 @@ Ansariel Hiller
|
|||
STORM-2105
|
||||
STORM-2151
|
||||
MAINT-8085
|
||||
STORM-2145
|
||||
Aralara Rajal
|
||||
Arare Chantilly
|
||||
CHUIBUG-191
|
||||
|
|
@ -772,6 +773,7 @@ Jonathan Yap
|
|||
STORM-2100
|
||||
STORM-2104
|
||||
STORM-2142
|
||||
STORM-2145
|
||||
Kadah Coba
|
||||
STORM-1060
|
||||
STORM-1843
|
||||
|
|
@ -1490,6 +1492,7 @@ Whirly Fizzle
|
|||
STORM-1930
|
||||
BUG-6659
|
||||
STORM-2078
|
||||
BUG-17349
|
||||
Whoops Babii
|
||||
VWR-631
|
||||
VWR-1640
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
/**
|
||||
|
||||
* @file llfloater.cpp
|
||||
* @brief LLFloater base class
|
||||
*
|
||||
|
|
|
|||
|
|
@ -212,7 +212,8 @@ public:
|
|||
|
||||
virtual void setColor(const LLColor4& color);
|
||||
|
||||
F32 getCurrentTransparency();
|
||||
// Ansariel: Changed to virtual. We might want to change the transparency ourself!
|
||||
virtual F32 getCurrentTransparency();
|
||||
|
||||
void setTransparencyType(ETypeTransparency type);
|
||||
ETypeTransparency getTransparencyType() const {return mTransparencyType;}
|
||||
|
|
|
|||
|
|
@ -279,6 +279,7 @@ set(viewer_SOURCE_FILES
|
|||
llfloaterperms.cpp
|
||||
llfloaterpostprocess.cpp
|
||||
llfloaterpreference.cpp
|
||||
llfloaterpreferenceviewadvanced.cpp
|
||||
llfloaterpreviewtrash.cpp
|
||||
llfloaterproperties.cpp
|
||||
llfloaterregiondebugconsole.cpp
|
||||
|
|
@ -467,6 +468,7 @@ set(viewer_SOURCE_FILES
|
|||
llpanelplaceprofile.cpp
|
||||
llpanelplaces.cpp
|
||||
llpanelplacestab.cpp
|
||||
llpanelpresetscamerapulldown.cpp
|
||||
llpanelpresetspulldown.cpp
|
||||
llpanelprimmediacontrols.cpp
|
||||
llpanelprofile.cpp
|
||||
|
|
@ -903,6 +905,7 @@ set(viewer_HEADER_FILES
|
|||
llfloaterperms.h
|
||||
llfloaterpostprocess.h
|
||||
llfloaterpreference.h
|
||||
llfloaterpreferenceviewadvanced.h
|
||||
llfloaterpreviewtrash.h
|
||||
llfloaterproperties.h
|
||||
llfloaterregiondebugconsole.h
|
||||
|
|
@ -1082,6 +1085,7 @@ set(viewer_HEADER_FILES
|
|||
llpanelplaceprofile.h
|
||||
llpanelplaces.h
|
||||
llpanelplacestab.h
|
||||
llpanelpresetscamerapulldown.h
|
||||
llpanelpresetspulldown.h
|
||||
llpanelprimmediacontrols.h
|
||||
llpanelprofile.h
|
||||
|
|
|
|||
|
|
@ -0,0 +1,115 @@
|
|||
<llsd>
|
||||
<map>
|
||||
<key>AppearanceCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering appearance editing mode, camera zooms in on currently selected portion of avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>CameraAngle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera field of view angle (Radians)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.047197551</real>
|
||||
</map>
|
||||
<key>CameraOffsetBuild</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default camera position relative to focus point when entering build mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-6</real>
|
||||
<real>0</real>
|
||||
<real>6</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar in Rear View</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>2.2</real>
|
||||
<real>0.0</real>
|
||||
<real>0.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Scales the default offset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>EditCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering build mode, camera moves up above avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FocusOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the camera preset Rear View (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>0.0</real>
|
||||
<real>0.0</real>
|
||||
<real>0.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Default</string>
|
||||
</map>
|
||||
<key>TrackFocusObject</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera tracks last object zoomed on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
<llsd>
|
||||
<map>
|
||||
<key>AppearanceCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering appearance editing mode, camera zooms in on currently selected portion of avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>CameraAngle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera field of view angle (Radians)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.047197551</real>
|
||||
</map>
|
||||
<key>CameraOffsetBuild</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default camera position relative to focus point when entering build mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-6</real>
|
||||
<real>0</real>
|
||||
<real>6</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar in Rear View</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-3.0</real>
|
||||
<real>0.0</real>
|
||||
<real>-0.2</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Scales the default offset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>EditCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering build mode, camera moves up above avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FocusOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the camera preset Rear View (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>0.9</real>
|
||||
<real>0.0</real>
|
||||
<real>0.2</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Default</string>
|
||||
</map>
|
||||
<key>TrackFocusObject</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera tracks last object zoomed on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
<llsd>
|
||||
<map>
|
||||
<key>AppearanceCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering appearance editing mode, camera zooms in on currently selected portion of avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>CameraAngle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera field of view angle (Radians)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.047197551</real>
|
||||
</map>
|
||||
<key>CameraOffsetBuild</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default camera position relative to focus point when entering build mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-6</real>
|
||||
<real>0</real>
|
||||
<real>6</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar in Rear View</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-3</real>
|
||||
<real>0</real>
|
||||
<real>0.75</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Scales the default offset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>EditCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering build mode, camera moves up above avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FocusOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the camera preset Rear View (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>1.0</real>
|
||||
<real>0.0</real>
|
||||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Default</string>
|
||||
</map>
|
||||
<key>TrackFocusObject</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera tracks last object zoomed on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
<llsd>
|
||||
<map>
|
||||
<key>AppearanceCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering appearance editing mode, camera zooms in on currently selected portion of avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>CameraAngle</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera field of view angle (Radians)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.047197551</real>
|
||||
</map>
|
||||
<key>CameraOffsetBuild</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Default camera position relative to focus point when entering build mode</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-6</real>
|
||||
<real>0</real>
|
||||
<real>6</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial camera offset from avatar in Rear View</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>-1.0</real>
|
||||
<real>0.7</real>
|
||||
<real>0.5</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>CameraOffsetScale</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Scales the default offset</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1</real>
|
||||
</map>
|
||||
<key>EditCameraMovement</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>When entering build mode, camera moves up above avatar</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>FocusOffsetRearView</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Initial focus point offset relative to avatar for the camera preset Rear View (x-axis is forward)</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Vector3D</string>
|
||||
<key>Value</key>
|
||||
<array>
|
||||
<real>1.5</real>
|
||||
<real>0.7</real>
|
||||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string>Default</string>
|
||||
</map>
|
||||
<key>TrackFocusObject</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Camera tracks last object zoomed on</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
@ -2369,7 +2369,8 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>DEPRECATED: DebugShowPrivateMem</key> <!-- deprecated (see MAINT-8091) -->
|
||||
<key>DEPRECATED: DebugShowPrivateMem</key>
|
||||
<!-- deprecated (see MAINT-8091) -->
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Show Private Mem Info</string>
|
||||
|
|
@ -6408,7 +6409,8 @@
|
|||
<key>Value</key>
|
||||
<real>600.0</real>
|
||||
</map>
|
||||
<key>MemoryPrivatePoolEnabled</key> <!-- deprecated (see MAINT-8091) -->
|
||||
<key>MemoryPrivatePoolEnabled</key>
|
||||
<!-- deprecated (see MAINT-8091) -->
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>DEPRECATED: Enable the private memory pool management</string>
|
||||
|
|
@ -6419,7 +6421,8 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>MemoryPrivatePoolSize</key> <!-- deprecated (see MAINT-8091) -->
|
||||
<key>MemoryPrivatePoolSize</key>
|
||||
<!-- deprecated (see MAINT-8091) -->
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>DEPRECATED: Size of the private memory pool in MB (min. value is 256)</string>
|
||||
|
|
@ -16167,7 +16170,29 @@
|
|||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>CefVerboseLog</key>
|
||||
<key>CameraOpacity</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Opacity of the Camera Controls floater</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>F32</string>
|
||||
<key>Value</key>
|
||||
<real>1.0</real>
|
||||
</map>
|
||||
<key>PresetCameraActive</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Name of currently selected preference</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>String</string>
|
||||
<key>Value</key>
|
||||
<string />
|
||||
</map>
|
||||
<key>CefVerboseLog</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Enable/disable CEF verbose loggingk</string>
|
||||
|
|
|
|||
|
|
@ -56,7 +56,10 @@ enum ECameraPreset
|
|||
CAMERA_PRESET_FRONT_VIEW,
|
||||
|
||||
/** "Above and to the left, over the shoulder, pulled back a little on the zoom" */
|
||||
CAMERA_PRESET_GROUP_VIEW
|
||||
CAMERA_PRESET_GROUP_VIEW,
|
||||
|
||||
/** Current view when a preset is saved */
|
||||
CAMERA_PRESET_CUSTOM0
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#include "llslider.h"
|
||||
#include "llfirstuse.h"
|
||||
#include "llhints.h"
|
||||
#include "lltabcontainer.h"
|
||||
|
||||
static LLDefaultChildRegistry::Register<LLPanelCameraItem> r("panel_camera_item");
|
||||
|
||||
|
|
@ -353,6 +354,7 @@ LLFloaterCamera::LLFloaterCamera(const LLSD& val)
|
|||
{
|
||||
LLHints::registerHintTarget("view_popup", getHandle());
|
||||
mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
|
||||
mCommitCallbackRegistrar.add("Presets.GoViewPrefs", boost::bind(&LLFloaterCamera::onViewButtonClick, this, _2));
|
||||
}
|
||||
|
||||
// virtual
|
||||
|
|
@ -376,6 +378,33 @@ BOOL LLFloaterCamera::postBuild()
|
|||
return LLFloater::postBuild();
|
||||
}
|
||||
|
||||
F32 LLFloaterCamera::getCurrentTransparency()
|
||||
{
|
||||
|
||||
static LLCachedControl<F32> camera_opacity(gSavedSettings, "CameraOpacity");
|
||||
static LLCachedControl<F32> active_floater_transparency(gSavedSettings, "ActiveFloaterTransparency");
|
||||
return llmin(camera_opacity(), active_floater_transparency());
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterCamera::onViewButtonClick(const LLSD& user_data)
|
||||
{
|
||||
// bring up the prefs floater
|
||||
LLFloater* prefsfloater = LLFloaterReg::showInstance("preferences");
|
||||
if (prefsfloater)
|
||||
{
|
||||
// grab the 'view' panel from the preferences floater and
|
||||
// bring it the front!
|
||||
LLTabContainer* tabcontainer = prefsfloater->getChild<LLTabContainer>("pref core");
|
||||
LLPanel* graphicspanel = prefsfloater->getChild<LLPanel>("view");
|
||||
if (tabcontainer && graphicspanel)
|
||||
{
|
||||
tabcontainer->selectTabPanel(graphicspanel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel)
|
||||
{
|
||||
// copying child list and then iterating over a copy, because list itself
|
||||
|
|
|
|||
|
|
@ -91,6 +91,10 @@ private:
|
|||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
F32 getCurrentTransparency();
|
||||
|
||||
void onViewButtonClick(const LLSD& user_data);
|
||||
|
||||
ECameraControlMode determineMode();
|
||||
|
||||
/* resets to the previous mode */
|
||||
|
|
|
|||
|
|
@ -60,13 +60,15 @@ void LLFloaterDeletePrefPreset::onOpen(const LLSD& key)
|
|||
{
|
||||
mSubdirectory = key.asString();
|
||||
std::string floater_title = getString(std::string("title_") + mSubdirectory);
|
||||
|
||||
setTitle(floater_title);
|
||||
|
||||
LLComboBox* combo = getChild<LLComboBox>("preset_combo");
|
||||
|
||||
EDefaultOptions option = DEFAULT_HIDE;
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
bool action;
|
||||
action = LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
|
||||
LLButton* delete_btn = getChild<LLButton>("delete");
|
||||
delete_btn->setEnabled(action);
|
||||
}
|
||||
|
||||
void LLFloaterDeletePrefPreset::onBtnDelete()
|
||||
|
|
@ -87,12 +89,10 @@ void LLFloaterDeletePrefPreset::onBtnDelete()
|
|||
void LLFloaterDeletePrefPreset::onPresetsListChange()
|
||||
{
|
||||
LLComboBox* combo = getChild<LLComboBox>("preset_combo");
|
||||
LLButton* delete_btn = getChild<LLButton>("delete");
|
||||
|
||||
EDefaultOptions option = DEFAULT_HIDE;
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
|
||||
delete_btn->setEnabled(0 != combo->getItemCount());
|
||||
LLPresetsManager::getInstance()->setPresetNamesInComboBox(mSubdirectory, combo, option);
|
||||
}
|
||||
|
||||
void LLFloaterDeletePrefPreset::onBtnCancel()
|
||||
|
|
|
|||
|
|
@ -42,7 +42,8 @@ LLFloaterLoadPrefPreset::LLFloaterLoadPrefPreset(const LLSD &key)
|
|||
|
||||
// virtual
|
||||
BOOL LLFloaterLoadPrefPreset::postBuild()
|
||||
{ LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
{
|
||||
LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (preferences)
|
||||
{
|
||||
preferences->addDependentFloater(this);
|
||||
|
|
|
|||
|
|
@ -661,7 +661,7 @@ void LLFloaterPreference::cancel()
|
|||
// hide spellchecker settings folder
|
||||
LLFloaterReg::hideInstance("prefs_spellchecker");
|
||||
|
||||
// hide advancede floater
|
||||
// hide advanced graphics floater
|
||||
LLFloaterReg::hideInstance("prefs_graphics_advanced");
|
||||
|
||||
// reverts any changes to current skin
|
||||
|
|
@ -780,7 +780,8 @@ void LLFloaterPreference::onOpen(const LLSD& key)
|
|||
saveSettings();
|
||||
|
||||
// Make sure there is a default preference file
|
||||
LLPresetsManager::getInstance()->createMissingDefault();
|
||||
LLPresetsManager::getInstance()->createMissingDefault(PRESETS_CAMERA);
|
||||
LLPresetsManager::getInstance()->createMissingDefault(PRESETS_GRAPHIC);
|
||||
|
||||
bool started = (LLStartUp::getStartupState() == STATE_STARTED);
|
||||
|
||||
|
|
@ -789,10 +790,24 @@ void LLFloaterPreference::onOpen(const LLSD& key)
|
|||
LLButton* delete_btn = findChild<LLButton>("PrefDeleteButton");
|
||||
LLButton* exceptions_btn = findChild<LLButton>("RenderExceptionsButton");
|
||||
|
||||
load_btn->setEnabled(started);
|
||||
save_btn->setEnabled(started);
|
||||
delete_btn->setEnabled(started);
|
||||
exceptions_btn->setEnabled(started);
|
||||
if (load_btn && save_btn && delete_btn && exceptions_btn)
|
||||
{
|
||||
load_btn->setEnabled(started);
|
||||
save_btn->setEnabled(started);
|
||||
delete_btn->setEnabled(started);
|
||||
exceptions_btn->setEnabled(started);
|
||||
}
|
||||
|
||||
LLButton* load_camera_btn = findChild<LLButton>("PrefCameraLoadButton");
|
||||
LLButton* save_camera_btn = findChild<LLButton>("PrefCameraSaveButton");
|
||||
LLButton* delete_camera_btn = findChild<LLButton>("PrefCameraDeleteButton");
|
||||
|
||||
if (load_camera_btn && save_camera_btn && delete_camera_btn)
|
||||
{
|
||||
load_camera_btn->setEnabled(started);
|
||||
save_camera_btn->setEnabled(started);
|
||||
delete_camera_btn->setEnabled(started);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onVertexShaderEnable()
|
||||
|
|
@ -2211,6 +2226,11 @@ void LLFloaterPreference::changed()
|
|||
|
||||
}
|
||||
|
||||
void LLFloaterPreference::saveCameraPreset(std::string& preset)
|
||||
{
|
||||
mSavedCameraPreset = preset;
|
||||
}
|
||||
|
||||
void LLFloaterPreference::saveGraphicsPreset(std::string& preset)
|
||||
{
|
||||
mSavedGraphicsPreset = preset;
|
||||
|
|
@ -2498,18 +2518,24 @@ void LLPanelPreference::updateMediaAutoPlayCheckbox(LLUICtrl* ctrl)
|
|||
void LLPanelPreference::deletePreset(const LLSD& user_data)
|
||||
{
|
||||
std::string subdirectory = user_data.asString();
|
||||
LLFloaterReg::hideInstance("load_pref_preset", subdirectory);
|
||||
LLFloaterReg::hideInstance("save_pref_preset", subdirectory);
|
||||
LLFloaterReg::showInstance("delete_pref_preset", subdirectory);
|
||||
}
|
||||
|
||||
void LLPanelPreference::savePreset(const LLSD& user_data)
|
||||
{
|
||||
std::string subdirectory = user_data.asString();
|
||||
LLFloaterReg::hideInstance("delete_pref_preset", subdirectory);
|
||||
LLFloaterReg::hideInstance("load_pref_preset", subdirectory);
|
||||
LLFloaterReg::showInstance("save_pref_preset", subdirectory);
|
||||
}
|
||||
|
||||
void LLPanelPreference::loadPreset(const LLSD& user_data)
|
||||
{
|
||||
std::string subdirectory = user_data.asString();
|
||||
LLFloaterReg::hideInstance("delete_pref_preset", subdirectory);
|
||||
LLFloaterReg::hideInstance("save_pref_preset", subdirectory);
|
||||
LLFloaterReg::showInstance("load_pref_preset", subdirectory);
|
||||
}
|
||||
|
||||
|
|
@ -2557,6 +2583,82 @@ private:
|
|||
|
||||
static LLPanelInjector<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics");
|
||||
static LLPanelInjector<LLPanelPreferencePrivacy> t_pref_privacy("panel_preference_privacy");
|
||||
static LLPanelInjector<LLPanelPreferenceView> t_pref_view("panel_preference_view");
|
||||
|
||||
BOOL LLPanelPreferenceView::postBuild()
|
||||
{
|
||||
setPresetText();
|
||||
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
if (presetsMgr)
|
||||
{
|
||||
presetsMgr->setPresetListChangeCameraCallback(boost::bind(&LLPanelPreferenceView::onPresetsListChangeCamera, this));
|
||||
presetsMgr->createMissingDefault(PRESETS_CAMERA); // a no-op after the first time, but that's ok
|
||||
}
|
||||
|
||||
return LLPanelPreference::postBuild();
|
||||
}
|
||||
|
||||
void LLPanelPreferenceView::onPresetsListChangeCamera()
|
||||
{
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
if (presetsMgr)
|
||||
{
|
||||
presetsMgr->setCameraDirty(false);
|
||||
}
|
||||
|
||||
setPresetText();
|
||||
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance && !gSavedSettings.getString("PresetCameraActive").empty())
|
||||
{
|
||||
instance->saveSettings(); //make cancel work correctly after changing the preset
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPreferenceView::draw()
|
||||
{
|
||||
setPresetText();
|
||||
LLPanelPreference::draw();
|
||||
}
|
||||
|
||||
void LLPanelPreferenceView::setPresetText()
|
||||
{
|
||||
LLTextBox* preset_text = getChild<LLTextBox>("preset_camera_text");
|
||||
|
||||
std::string preset_camera_active = gSavedSettings.getString("PresetCameraActive");
|
||||
|
||||
if (!preset_camera_active.empty() && preset_camera_active != preset_text->getText())
|
||||
{
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->saveCameraPreset(preset_camera_active);
|
||||
}
|
||||
}
|
||||
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
if (presetsMgr)
|
||||
{
|
||||
if (presetsMgr->isCameraDirty() && !preset_camera_active.empty())
|
||||
{
|
||||
preset_camera_active.clear();
|
||||
}
|
||||
}
|
||||
|
||||
if (!preset_camera_active.empty())
|
||||
{
|
||||
if (preset_camera_active == PRESETS_DEFAULT)
|
||||
{
|
||||
preset_camera_active = LLTrans::getString(PRESETS_DEFAULT);
|
||||
}
|
||||
preset_text->setText(preset_camera_active);
|
||||
}
|
||||
else
|
||||
{
|
||||
preset_text->setText(LLTrans::getString("none_paren_cap"));
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLPanelPreferenceGraphics::postBuild()
|
||||
{
|
||||
|
|
@ -2580,7 +2682,7 @@ BOOL LLPanelPreferenceGraphics::postBuild()
|
|||
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
presetsMgr->setPresetListChangeCallback(boost::bind(&LLPanelPreferenceGraphics::onPresetsListChange, this));
|
||||
presetsMgr->createMissingDefault(); // a no-op after the first time, but that's ok
|
||||
presetsMgr->createMissingDefault(PRESETS_GRAPHIC); // a no-op after the first time, but that's ok
|
||||
|
||||
return LLPanelPreference::postBuild();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -179,6 +179,7 @@ public:
|
|||
void buildPopupLists();
|
||||
static void refreshSkin(void* data);
|
||||
void selectPanel(const LLSD& name);
|
||||
void saveCameraPreset(std::string& preset);
|
||||
void saveGraphicsPreset(std::string& preset);
|
||||
|
||||
private:
|
||||
|
|
@ -201,6 +202,7 @@ private:
|
|||
std::string mDirectoryVisibility;
|
||||
|
||||
LLAvatarData mAvatarProperties;
|
||||
std::string mSavedCameraPreset;
|
||||
std::string mSavedGraphicsPreset;
|
||||
LOG_CLASS(LLFloaterPreference);
|
||||
};
|
||||
|
|
@ -249,6 +251,18 @@ private:
|
|||
LOG_CLASS(LLPanelPreference);
|
||||
};
|
||||
|
||||
class LLPanelPreferenceView : public LLPanelPreference
|
||||
{
|
||||
public:
|
||||
BOOL postBuild();
|
||||
void draw();
|
||||
void setPresetText();
|
||||
|
||||
private:
|
||||
void onPresetsListChangeCamera();
|
||||
LOG_CLASS(LLPanelPreferenceView);
|
||||
};
|
||||
|
||||
class LLPanelPreferenceGraphics : public LLPanelPreference
|
||||
{
|
||||
public:
|
||||
|
|
@ -266,7 +280,6 @@ protected:
|
|||
bool hasDirtyChilds();
|
||||
|
||||
private:
|
||||
|
||||
void onPresetsListChange();
|
||||
LOG_CLASS(LLPanelPreferenceGraphics);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,112 @@
|
|||
/**
|
||||
* @file llfloaterpreferenceviewadvanced.cpp
|
||||
* @brief floater for adjusting camera position
|
||||
*
|
||||
* $LicenseInfo:firstyear=2018&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2018, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* 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 "llfloaterpreferenceviewadvanced.h"
|
||||
#include "llfloater.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#include "llspinctrl.h"
|
||||
#include "llviewercontrol.h"
|
||||
|
||||
|
||||
LLFloaterPreferenceViewAdvanced::LLFloaterPreferenceViewAdvanced(const LLSD& key)
|
||||
: LLFloater(key)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("Cancel", boost::bind(&LLFloaterPreferenceViewAdvanced::onClickCancel, this));
|
||||
mCommitCallbackRegistrar.add("CommitSettings", boost::bind(&LLFloaterPreferenceViewAdvanced::onCommitSettings, this));
|
||||
mCommitCallbackRegistrar.add("Ok", boost::bind(&LLFloaterPreferenceViewAdvanced::onClickOk, this));
|
||||
|
||||
}
|
||||
|
||||
LLFloaterPreferenceViewAdvanced::~LLFloaterPreferenceViewAdvanced()
|
||||
{}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::onClickOk()
|
||||
{
|
||||
closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::onClickCancel()
|
||||
{
|
||||
gSavedSettings.setVector3("CameraOffsetRearView", mCameraSaved);
|
||||
gSavedSettings.setVector3d("FocusOffsetRearView", mFocusSaved);
|
||||
|
||||
updateCameraControl(mCameraSaved);
|
||||
updateFocusControl(mFocusSaved);
|
||||
}
|
||||
|
||||
BOOL LLFloaterPreferenceViewAdvanced::postBuild()
|
||||
{
|
||||
mCameraSaved = gSavedSettings.getVector3("CameraOffsetRearView");
|
||||
mFocusSaved = gSavedSettings.getVector3d("FocusOffsetRearView");
|
||||
|
||||
updateCameraControl(mCameraSaved);
|
||||
updateFocusControl(mFocusSaved);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::updateCameraControl(const LLVector3& vector)
|
||||
{
|
||||
getChild<LLSpinCtrl>("camera_x")->setValue(vector[VX]);
|
||||
getChild<LLSpinCtrl>("camera_y")->setValue(vector[VY]);
|
||||
getChild<LLSpinCtrl>("camera_z")->setValue(vector[VZ]);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::updateFocusControl(const LLVector3d& vector3d)
|
||||
{
|
||||
getChild<LLSpinCtrl>("focus_x")->setValue(vector3d[VX]);
|
||||
getChild<LLSpinCtrl>("focus_y")->setValue(vector3d[VY]);
|
||||
getChild<LLSpinCtrl>("focus_z")->setValue(vector3d[VZ]);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::draw()
|
||||
{
|
||||
static LLCachedControl<LLVector3> camera(gSavedSettings, "CameraOffsetRearView");
|
||||
static LLCachedControl<LLVector3d> focus(gSavedSettings, "FocusOffsetRearView");
|
||||
|
||||
updateCameraControl(camera);
|
||||
updateFocusControl(focus);
|
||||
|
||||
LLFloater::draw();
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceViewAdvanced::onCommitSettings()
|
||||
{
|
||||
LLVector3 vector;
|
||||
LLVector3d vector3d;
|
||||
|
||||
vector.mV[VX] = (F32)getChild<LLUICtrl>("camera_x")->getValue().asReal();
|
||||
vector.mV[VY] = (F32)getChild<LLUICtrl>("camera_y")->getValue().asReal();
|
||||
vector.mV[VZ] = (F32)getChild<LLUICtrl>("camera_z")->getValue().asReal();
|
||||
gSavedSettings.setVector3("CameraOffsetRearView", vector);
|
||||
|
||||
vector3d.mdV[VX] = (F32)getChild<LLUICtrl>("focus_x")->getValue().asReal();
|
||||
vector3d.mdV[VY] = (F32)getChild<LLUICtrl>("focus_y")->getValue().asReal();
|
||||
vector3d.mdV[VZ] = (F32)getChild<LLUICtrl>("focus_z")->getValue().asReal();
|
||||
gSavedSettings.setVector3d("FocusOffsetRearView", vector3d);
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
/**
|
||||
* @file llfloaterpreferenceviewadvanced.h
|
||||
* @brief floater for adjusting camera position
|
||||
*
|
||||
* $LicenseInfo:firstyear=2018&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2018, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* 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 LLFLOATERPREFERENCEVIEWADVANCED_H
|
||||
#define LLFLOATERPREFERENCEVIEWADVANCED_H
|
||||
|
||||
#include "llcontrol.h"
|
||||
#include "llfloater.h"
|
||||
|
||||
class LLFloaterPreferenceViewAdvanced
|
||||
: public LLFloater
|
||||
{
|
||||
friend class LLFloaterReg;
|
||||
|
||||
public:
|
||||
LLFloaterPreferenceViewAdvanced(const LLSD& key);
|
||||
virtual BOOL postBuild();
|
||||
virtual void draw();
|
||||
|
||||
void onCommitSettings();
|
||||
void onClickCancel();
|
||||
void onClickOk();
|
||||
void updateCameraControl(const LLVector3& vector);
|
||||
void updateFocusControl(const LLVector3d& vector3d);
|
||||
|
||||
private:
|
||||
virtual ~LLFloaterPreferenceViewAdvanced();
|
||||
|
||||
LLVector3 mCameraSaved;
|
||||
LLVector3d mFocusSaved;
|
||||
|
||||
};
|
||||
|
||||
#endif //LLFLOATERPREFERENCEVIEWADVANCED_H
|
||||
|
||||
|
|
@ -42,7 +42,8 @@ LLFloaterSavePrefPreset::LLFloaterSavePrefPreset(const LLSD &key)
|
|||
|
||||
// virtual
|
||||
BOOL LLFloaterSavePrefPreset::postBuild()
|
||||
{ LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
{
|
||||
LLFloaterPreference* preferences = LLFloaterReg::getTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (preferences)
|
||||
{
|
||||
preferences->addDependentFloater(this);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,237 @@
|
|||
/**
|
||||
* @file llpanelpresetscamerapulldown.cpp
|
||||
* @brief A panel showing a quick way to pick camera presets
|
||||
*
|
||||
* $LicenseInfo:firstyear=2017&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2017, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llpanelpresetscamerapulldown.h"
|
||||
|
||||
#include "llviewercontrol.h"
|
||||
#include "llstatusbar.h"
|
||||
|
||||
#include "llbutton.h"
|
||||
#include "lltabcontainer.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llfloaterpreference.h"
|
||||
#include "llpresetsmanager.h"
|
||||
#include "llsliderctrl.h"
|
||||
#include "llscrolllistctrl.h"
|
||||
#include "lltrans.h"
|
||||
|
||||
/* static */ const F32 LLPanelPresetsCameraPulldown::sAutoCloseFadeStartTimeSec = 2.0f;
|
||||
/* static */ const F32 LLPanelPresetsCameraPulldown::sAutoCloseTotalTimeSec = 3.0f;
|
||||
|
||||
///----------------------------------------------------------------------------
|
||||
/// Class LLPanelPresetsCameraPulldown
|
||||
///----------------------------------------------------------------------------
|
||||
|
||||
// Default constructor
|
||||
LLPanelPresetsCameraPulldown::LLPanelPresetsCameraPulldown()
|
||||
{
|
||||
mHoverTimer.stop();
|
||||
|
||||
mCommitCallbackRegistrar.add("Presets.GoViewPrefs", boost::bind(&LLPanelPresetsCameraPulldown::onViewButtonClick, this, _2));
|
||||
mCommitCallbackRegistrar.add("PresetsCamera.RowClick", boost::bind(&LLPanelPresetsCameraPulldown::onRowClick, this, _2));
|
||||
|
||||
buildFromFile( "panel_presets_camera_pulldown.xml");
|
||||
}
|
||||
|
||||
BOOL LLPanelPresetsCameraPulldown::postBuild()
|
||||
{
|
||||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
if (presetsMgr)
|
||||
{
|
||||
// Make sure there is a default preference file
|
||||
presetsMgr->createMissingDefault(PRESETS_CAMERA);
|
||||
|
||||
presetsMgr->startWatching(PRESETS_CAMERA);
|
||||
|
||||
presetsMgr->setPresetListChangeCameraCallback(boost::bind(&LLPanelPresetsCameraPulldown::populatePanel, this));
|
||||
}
|
||||
|
||||
populatePanel();
|
||||
|
||||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
void LLPanelPresetsCameraPulldown::populatePanel()
|
||||
{
|
||||
std::string presets_dir = LLPresetsManager::getInstance()->getPresetsDir(PRESETS_CAMERA);
|
||||
LLPresetsManager::getInstance()->loadPresetNamesFromDir(presets_dir, mPresetNames, DEFAULT_TOP);
|
||||
|
||||
LLScrollListCtrl* scroll = getChild<LLScrollListCtrl>("preset_camera_list");
|
||||
|
||||
if (scroll && mPresetNames.begin() != mPresetNames.end())
|
||||
{
|
||||
scroll->clearRows();
|
||||
|
||||
std::string active_preset = gSavedSettings.getString("PresetCameraActive");
|
||||
if (active_preset == PRESETS_DEFAULT)
|
||||
{
|
||||
active_preset = LLTrans::getString(PRESETS_DEFAULT);
|
||||
}
|
||||
|
||||
for (std::list<std::string>::const_iterator it = mPresetNames.begin(); it != mPresetNames.end(); ++it)
|
||||
{
|
||||
const std::string& name = *it;
|
||||
LL_DEBUGS() << "adding '" << name << "'" << LL_ENDL;
|
||||
|
||||
LLSD row;
|
||||
row["columns"][0]["column"] = "preset_name";
|
||||
row["columns"][0]["value"] = name;
|
||||
|
||||
bool is_selected_preset = false;
|
||||
if (name == active_preset)
|
||||
{
|
||||
row["columns"][1]["column"] = "icon";
|
||||
row["columns"][1]["type"] = "icon";
|
||||
row["columns"][1]["value"] = "Check_Mark";
|
||||
|
||||
is_selected_preset = true;
|
||||
}
|
||||
|
||||
LLScrollListItem* new_item = scroll->addElement(row);
|
||||
new_item->setSelected(is_selected_preset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onMouseEnter(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mHoverTimer.stop();
|
||||
LLPanel::onMouseEnter(x,y,mask);
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onTopLost()
|
||||
{
|
||||
setVisible(FALSE);
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
BOOL LLPanelPresetsCameraPulldown::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLPanel::handleMouseDown(x,y,mask);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
BOOL LLPanelPresetsCameraPulldown::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLPanel::handleRightMouseDown(x, y, mask);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
BOOL LLPanelPresetsCameraPulldown::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLPanel::handleDoubleClick(x, y, mask);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onMouseLeave(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
mHoverTimer.start();
|
||||
LLPanel::onMouseLeave(x,y,mask);
|
||||
}
|
||||
|
||||
/*virtual*/
|
||||
void LLPanelPresetsCameraPulldown::onVisibilityChange ( BOOL new_visibility )
|
||||
{
|
||||
if (new_visibility)
|
||||
{
|
||||
mHoverTimer.start(); // timer will be stopped when mouse hovers over panel
|
||||
}
|
||||
else
|
||||
{
|
||||
mHoverTimer.stop();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPresetsCameraPulldown::onRowClick(const LLSD& user_data)
|
||||
{
|
||||
LLScrollListCtrl* scroll = getChild<LLScrollListCtrl>("preset_camera_list");
|
||||
|
||||
if (scroll)
|
||||
{
|
||||
LLScrollListItem* item = scroll->getFirstSelected();
|
||||
if (item)
|
||||
{
|
||||
std::string name = item->getColumn(1)->getValue().asString();
|
||||
|
||||
LL_DEBUGS() << "selected '" << name << "'" << LL_ENDL;
|
||||
LLPresetsManager::getInstance()->loadPreset(PRESETS_CAMERA, name);
|
||||
|
||||
setVisible(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS() << "none selected" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS() << "no scroll" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelPresetsCameraPulldown::onViewButtonClick(const LLSD& user_data)
|
||||
{
|
||||
// close the minicontrol, we're bringing up the big one
|
||||
setVisible(FALSE);
|
||||
|
||||
// bring up the prefs floater
|
||||
LLFloater* prefsfloater = LLFloaterReg::showInstance("preferences");
|
||||
if (prefsfloater)
|
||||
{
|
||||
// grab the 'view' panel from the preferences floater and
|
||||
// bring it the front!
|
||||
LLTabContainer* tabcontainer = prefsfloater->getChild<LLTabContainer>("pref core");
|
||||
LLPanel* graphicspanel = prefsfloater->getChild<LLPanel>("view");
|
||||
if (tabcontainer && graphicspanel)
|
||||
{
|
||||
tabcontainer->selectTabPanel(graphicspanel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLPanelPresetsCameraPulldown::draw()
|
||||
{
|
||||
F32 alpha = mHoverTimer.getStarted()
|
||||
? clamp_rescale(mHoverTimer.getElapsedTimeF32(), sAutoCloseFadeStartTimeSec, sAutoCloseTotalTimeSec, 1.f, 0.f)
|
||||
: 1.0f;
|
||||
LLViewDrawContext context(alpha);
|
||||
|
||||
LLPanel::draw();
|
||||
|
||||
if (alpha == 0.f)
|
||||
{
|
||||
setVisible(FALSE);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
/**
|
||||
* @file llpanelpresetscamerapulldown.h
|
||||
* @brief A panel showing a quick way to pick camera presets
|
||||
*
|
||||
* $LicenseInfo:firstyear=2017&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2017, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LL_LLPANELPRESETSCAMERAPULLDOWN_H
|
||||
#define LL_LLPANELPRESETSCAMERAPULLDOWN_H
|
||||
|
||||
#include "linden_common.h"
|
||||
|
||||
#include "llpanel.h"
|
||||
|
||||
class LLFrameTimer;
|
||||
|
||||
class LLPanelPresetsCameraPulldown : public LLPanel
|
||||
{
|
||||
public:
|
||||
LLPanelPresetsCameraPulldown();
|
||||
/*virtual*/ void draw();
|
||||
/*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
|
||||
/*virtual*/ void onTopLost();
|
||||
/*virtual*/ void onVisibilityChange ( BOOL new_visibility );
|
||||
/*virtual*/ BOOL postBuild();
|
||||
void populatePanel();
|
||||
|
||||
private:
|
||||
void onViewButtonClick(const LLSD& user_data);
|
||||
void onRowClick(const LLSD& user_data);
|
||||
|
||||
std::list<std::string> mPresetNames;
|
||||
LLFrameTimer mHoverTimer;
|
||||
static const F32 sAutoCloseFadeStartTimeSec;
|
||||
static const F32 sAutoCloseTotalTimeSec;
|
||||
LOG_CLASS(LLPanelPresetsCameraPulldown);
|
||||
};
|
||||
|
||||
#endif // LL_LLPANELPRESETSCAMERAPULLDOWN_H
|
||||
|
|
@ -63,7 +63,7 @@ BOOL LLPanelPresetsPulldown::postBuild()
|
|||
LLPresetsManager* presetsMgr = LLPresetsManager::getInstance();
|
||||
presetsMgr->setPresetListChangeCallback(boost::bind(&LLPanelPresetsPulldown::populatePanel, this));
|
||||
// Make sure there is a default preference file
|
||||
presetsMgr->createMissingDefault();
|
||||
presetsMgr->createMissingDefault(PRESETS_GRAPHIC);
|
||||
|
||||
populatePanel();
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@
|
|||
#include "llfloaterpreference.h"
|
||||
#include "llfloaterreg.h"
|
||||
#include "llfeaturemanager.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "llfile.h"
|
||||
|
||||
LLPresetsManager::LLPresetsManager()
|
||||
{
|
||||
|
|
@ -46,6 +48,12 @@ LLPresetsManager::LLPresetsManager()
|
|||
|
||||
LLPresetsManager::~LLPresetsManager()
|
||||
{
|
||||
mCameraChangedSignal.disconnect();
|
||||
}
|
||||
|
||||
void LLPresetsManager::triggerChangeCameraSignal()
|
||||
{
|
||||
mPresetListChangeCameraSignal();
|
||||
}
|
||||
|
||||
void LLPresetsManager::triggerChangeSignal()
|
||||
|
|
@ -53,19 +61,21 @@ void LLPresetsManager::triggerChangeSignal()
|
|||
mPresetListChangeSignal();
|
||||
}
|
||||
|
||||
void LLPresetsManager::createMissingDefault()
|
||||
void LLPresetsManager::createMissingDefault(const std::string& subdirectory)
|
||||
{
|
||||
if(gDirUtilp->getLindenUserDir().empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, PRESETS_GRAPHIC, PRESETS_DEFAULT + ".xml");
|
||||
|
||||
std::string default_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR,
|
||||
subdirectory, PRESETS_DEFAULT + ".xml");
|
||||
if (!gDirUtilp->fileExists(default_file))
|
||||
{
|
||||
LL_INFOS() << "No default preset found -- creating one at " << default_file << LL_ENDL;
|
||||
|
||||
// Write current graphic settings as the default
|
||||
savePreset(PRESETS_GRAPHIC, PRESETS_DEFAULT, true);
|
||||
// Write current settings as the default
|
||||
savePreset(subdirectory, PRESETS_DEFAULT, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -73,17 +83,64 @@ void LLPresetsManager::createMissingDefault()
|
|||
}
|
||||
}
|
||||
|
||||
void LLPresetsManager::startWatching(const std::string& subdirectory)
|
||||
{
|
||||
if (PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
std::vector<std::string> name_list;
|
||||
getControlNames(name_list);
|
||||
|
||||
for (std::vector<std::string>::iterator it = name_list.begin(); it != name_list.end(); ++it)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
if (gSavedSettings.controlExists(ctrl_name))
|
||||
{
|
||||
LLPointer<LLControlVariable> cntrl_ptr = gSavedSettings.getControl(ctrl_name);
|
||||
if (cntrl_ptr.isNull())
|
||||
{
|
||||
LL_WARNS("Init") << "Unable to set signal on global setting '" << ctrl_name
|
||||
<< "'" << LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
mCameraChangedSignal = cntrl_ptr->getCommitSignal()->connect(boost::bind(&settingChanged));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string LLPresetsManager::getPresetsDir(const std::string& subdirectory)
|
||||
{
|
||||
std::string presets_path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR);
|
||||
std::string full_path;
|
||||
|
||||
LLFile::mkdir(presets_path);
|
||||
|
||||
full_path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, subdirectory);
|
||||
LLFile::mkdir(full_path);
|
||||
std::string dest_path = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, subdirectory);
|
||||
if (!gDirUtilp->fileExists(dest_path))
|
||||
LLFile::mkdir(dest_path);
|
||||
|
||||
return full_path;
|
||||
if (PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
std::string source_dir = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, PRESETS_CAMERA);
|
||||
LLDirIterator dir_iter(source_dir, "*.xml");
|
||||
bool found = true;
|
||||
while (found)
|
||||
{
|
||||
std::string file;
|
||||
found = dir_iter.next(file);
|
||||
|
||||
if (found)
|
||||
{
|
||||
std::string source = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, PRESETS_CAMERA, file);
|
||||
file = LLURI::escape(file);
|
||||
std::string dest = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, PRESETS_DIR, PRESETS_CAMERA, file);
|
||||
LLFile::copy(source, dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return dest_path;
|
||||
}
|
||||
|
||||
void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_name_list_t& presets, EDefaultOptions default_option)
|
||||
|
|
@ -132,6 +189,47 @@ void LLPresetsManager::loadPresetNamesFromDir(const std::string& dir, preset_nam
|
|||
presets = mPresetNames;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::mCameraDirty = false;
|
||||
|
||||
void LLPresetsManager::setCameraDirty(bool dirty)
|
||||
{
|
||||
mCameraDirty = dirty;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::isCameraDirty()
|
||||
{
|
||||
return mCameraDirty;
|
||||
}
|
||||
|
||||
void LLPresetsManager::settingChanged()
|
||||
{
|
||||
setCameraDirty(true);
|
||||
|
||||
gSavedSettings.setString("PresetCameraActive", "");
|
||||
|
||||
// Hack call because this is a static routine
|
||||
LLPresetsManager::getInstance()->triggerChangeCameraSignal();
|
||||
|
||||
}
|
||||
|
||||
void LLPresetsManager::getControlNames(std::vector<std::string>& names)
|
||||
{
|
||||
const std::vector<std::string> camera_controls = boost::assign::list_of
|
||||
// From panel_preferences_move.xml
|
||||
("CameraAngle")
|
||||
("CameraOffsetScale")
|
||||
("EditCameraMovement")
|
||||
("AppearanceCameraMovement")
|
||||
// From llagentcamera.cpp
|
||||
("CameraOffsetBuild")
|
||||
("CameraOffsetRearView")
|
||||
("FocusOffsetRearView")
|
||||
("CameraOffsetScale")
|
||||
("TrackFocusObject")
|
||||
;
|
||||
names = camera_controls;
|
||||
}
|
||||
|
||||
bool LLPresetsManager::savePreset(const std::string& subdirectory, std::string name, bool createDefault)
|
||||
{
|
||||
if (LLTrans::getString(PRESETS_DEFAULT) == name)
|
||||
|
|
@ -147,94 +245,107 @@ bool LLPresetsManager::savePreset(const std::string& subdirectory, std::string n
|
|||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance && !createDefault)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
instance->getControlNames(name_list);
|
||||
LL_DEBUGS() << "saving preset '" << name << "'; " << name_list.size() << " names" << LL_ENDL;
|
||||
LL_DEBUGS() << "saving preset '" << name << "'; " << name_list.size() << " names" << LL_ENDL;
|
||||
name_list.push_back("PresetGraphicActive");
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "preferences floater instance not found" << LL_ENDL;
|
||||
}
|
||||
LL_WARNS("Presets") << "preferences floater instance not found" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else if(PRESETS_CAMERA == subdirectory)
|
||||
else if(PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
|
||||
name_list.clear();
|
||||
name_list.push_back("Placeholder");
|
||||
getControlNames(name_list);
|
||||
name_list.push_back("PresetCameraActive");
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_ERRS() << "Invalid presets directory '" << subdirectory << "'" << LL_ENDL;
|
||||
}
|
||||
|
||||
// make an empty llsd
|
||||
LLSD paramsData(LLSD::emptyMap());
|
||||
|
||||
// Create a default graphics preset from hw recommended settings
|
||||
if (createDefault && name == PRESETS_DEFAULT && subdirectory == PRESETS_GRAPHIC)
|
||||
{
|
||||
paramsData = LLFeatureManager::getInstance()->getRecommendedSettingsMap();
|
||||
if (gSavedSettings.getU32("RenderAvatarMaxComplexity") == 0)
|
||||
{
|
||||
// use the recommended setting as an initial one (MAINT-6435)
|
||||
gSavedSettings.setU32("RenderAvatarMaxComplexity", paramsData["RenderAvatarMaxComplexity"]["Value"].asInteger());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (std::vector<std::string>::iterator it = name_list.begin(); it != name_list.end(); ++it)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
|
||||
std::string comment = ctrl->getComment();
|
||||
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
|
||||
LLSD value = ctrl->getValue();
|
||||
|
||||
paramsData[ctrl_name]["Comment"] = comment;
|
||||
paramsData[ctrl_name]["Persist"] = 1;
|
||||
paramsData[ctrl_name]["Type"] = type;
|
||||
paramsData[ctrl_name]["Value"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
std::string pathName(getPresetsDir(subdirectory) + gDirUtilp->getDirDelimiter() + LLURI::escape(name) + ".xml");
|
||||
|
||||
// If the active preset name is the only thing in the list, don't save the list
|
||||
if (paramsData.size() > 1)
|
||||
{
|
||||
// write to file
|
||||
llofstream presetsXML(pathName.c_str());
|
||||
if (presetsXML.is_open())
|
||||
{
|
||||
LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
|
||||
formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY);
|
||||
presetsXML.close();
|
||||
saved = true;
|
||||
|
||||
LL_DEBUGS() << "saved preset '" << name << "'; " << paramsData.size() << " parameters" << LL_ENDL;
|
||||
|
||||
if (subdirectory == PRESETS_GRAPHIC)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
}
|
||||
|
||||
if (subdirectory == PRESETS_CAMERA)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", name);
|
||||
setCameraDirty(false);
|
||||
// signal interested parties
|
||||
triggerChangeCameraSignal();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("Presets") << "Cannot open for output preset file " << pathName << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_ERRS() << "Invalid presets directory '" << subdirectory << "'" << LL_ENDL;
|
||||
}
|
||||
|
||||
if (name_list.size() > 1 // if the active preset name is the only thing in the list, don't save the list
|
||||
|| (createDefault && name == PRESETS_DEFAULT && subdirectory == PRESETS_GRAPHIC)) // or create a default graphics preset from hw recommended settings
|
||||
{
|
||||
// make an empty llsd
|
||||
LLSD paramsData(LLSD::emptyMap());
|
||||
|
||||
if (createDefault)
|
||||
{
|
||||
paramsData = LLFeatureManager::getInstance()->getRecommendedSettingsMap();
|
||||
if (gSavedSettings.getU32("RenderAvatarMaxComplexity") == 0)
|
||||
{
|
||||
// use the recommended setting as an initial one (MAINT-6435)
|
||||
gSavedSettings.setU32("RenderAvatarMaxComplexity", paramsData["RenderAvatarMaxComplexity"]["Value"].asInteger());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (std::vector<std::string>::iterator it = name_list.begin(); it != name_list.end(); ++it)
|
||||
{
|
||||
std::string ctrl_name = *it;
|
||||
LLControlVariable* ctrl = gSavedSettings.getControl(ctrl_name).get();
|
||||
std::string comment = ctrl->getComment();
|
||||
std::string type = LLControlGroup::typeEnumToString(ctrl->type());
|
||||
LLSD value = ctrl->getValue();
|
||||
|
||||
paramsData[ctrl_name]["Comment"] = comment;
|
||||
paramsData[ctrl_name]["Persist"] = 1;
|
||||
paramsData[ctrl_name]["Type"] = type;
|
||||
paramsData[ctrl_name]["Value"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
std::string pathName(getPresetsDir(subdirectory) + gDirUtilp->getDirDelimiter() + LLURI::escape(name) + ".xml");
|
||||
|
||||
// write to file
|
||||
llofstream presetsXML(pathName.c_str());
|
||||
if (presetsXML.is_open())
|
||||
{
|
||||
|
||||
LLPointer<LLSDFormatter> formatter = new LLSDXMLFormatter();
|
||||
formatter->format(paramsData, presetsXML, LLSDFormatter::OPTIONS_PRETTY);
|
||||
presetsXML.close();
|
||||
saved = true;
|
||||
|
||||
LL_DEBUGS() << "saved preset '" << name << "'; " << paramsData.size() << " parameters" << LL_ENDL;
|
||||
|
||||
if (!createDefault)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS("Presets") << "Cannot open for output preset file " << pathName << LL_ENDL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_INFOS() << "No settings found; preferences floater has not yet been created" << LL_ENDL;
|
||||
}
|
||||
{
|
||||
LL_INFOS() << "No settings available to be saved" << LL_ENDL;
|
||||
}
|
||||
|
||||
return saved;
|
||||
}
|
||||
|
||||
void LLPresetsManager::setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option)
|
||||
bool LLPresetsManager::setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option)
|
||||
{
|
||||
bool sts = true;
|
||||
|
||||
combo->clearRows();
|
||||
|
||||
std::string presets_dir = getPresetsDir(subdirectory);
|
||||
|
|
@ -257,8 +368,10 @@ void LLPresetsManager::setPresetNamesInComboBox(const std::string& subdirectory,
|
|||
else
|
||||
{
|
||||
combo->setLabel(LLTrans::getString("preset_combo_label"));
|
||||
sts = false;
|
||||
}
|
||||
}
|
||||
return sts;
|
||||
}
|
||||
|
||||
void LLPresetsManager::loadPreset(const std::string& subdirectory, std::string name)
|
||||
|
|
@ -277,18 +390,23 @@ void LLPresetsManager::loadPreset(const std::string& subdirectory, std::string n
|
|||
if(PRESETS_GRAPHIC == subdirectory)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", name);
|
||||
}
|
||||
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->refreshEnabledGraphics();
|
||||
LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");
|
||||
if (instance)
|
||||
{
|
||||
instance->refreshEnabledGraphics();
|
||||
}
|
||||
triggerChangeSignal();
|
||||
}
|
||||
if(PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", name);
|
||||
triggerChangeCameraSignal();
|
||||
}
|
||||
triggerChangeSignal();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "failed to load preset '"<<name<<"' from '"<<full_path<<"'" << LL_ENDL;
|
||||
LL_WARNS("Presets") << "failed to load preset '"<<name<<"' from '"<<full_path<<"'" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -315,17 +433,34 @@ bool LLPresetsManager::deletePreset(const std::string& subdirectory, std::string
|
|||
}
|
||||
|
||||
// If you delete the preset that is currently marked as loaded then also indicate that no preset is loaded.
|
||||
if (gSavedSettings.getString("PresetGraphicActive") == name)
|
||||
if(PRESETS_GRAPHIC == subdirectory)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", "");
|
||||
if (gSavedSettings.getString("PresetGraphicActive") == name)
|
||||
{
|
||||
gSavedSettings.setString("PresetGraphicActive", "");
|
||||
}
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
}
|
||||
|
||||
// signal interested parties
|
||||
triggerChangeSignal();
|
||||
if(PRESETS_CAMERA == subdirectory)
|
||||
{
|
||||
if (gSavedSettings.getString("PresetCameraActive") == name)
|
||||
{
|
||||
gSavedSettings.setString("PresetCameraActive", "");
|
||||
}
|
||||
// signal interested parties
|
||||
triggerChangeCameraSignal();
|
||||
}
|
||||
|
||||
return sts;
|
||||
}
|
||||
|
||||
boost::signals2::connection LLPresetsManager::setPresetListChangeCameraCallback(const preset_list_signal_t::slot_type& cb)
|
||||
{
|
||||
return mPresetListChangeCameraSignal.connect(cb);
|
||||
}
|
||||
|
||||
boost::signals2::connection LLPresetsManager::setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb)
|
||||
{
|
||||
return mPresetListChangeSignal.connect(cb);
|
||||
|
|
|
|||
|
|
@ -54,26 +54,39 @@ public:
|
|||
typedef std::list<std::string> preset_name_list_t;
|
||||
typedef boost::signals2::signal<void()> preset_list_signal_t;
|
||||
|
||||
void createMissingDefault();
|
||||
void createMissingDefault(const std::string& subdirectory);
|
||||
void startWatching(const std::string& subdirectory);
|
||||
void triggerChangeCameraSignal();
|
||||
void triggerChangeSignal();
|
||||
static std::string getPresetsDir(const std::string& subdirectory);
|
||||
void setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option);
|
||||
bool setPresetNamesInComboBox(const std::string& subdirectory, LLComboBox* combo, EDefaultOptions default_option);
|
||||
void loadPresetNamesFromDir(const std::string& dir, preset_name_list_t& presets, EDefaultOptions default_option);
|
||||
bool savePreset(const std::string& subdirectory, std::string name, bool createDefault = false);
|
||||
void loadPreset(const std::string& subdirectory, std::string name);
|
||||
bool deletePreset(const std::string& subdirectory, std::string name);
|
||||
bool isCameraDirty();
|
||||
static void setCameraDirty(bool dirty);
|
||||
|
||||
// Emitted when a preset gets loaded, deleted, or saved.
|
||||
boost::signals2::connection setPresetListChangeCameraCallback(const preset_list_signal_t::slot_type& cb);
|
||||
boost::signals2::connection setPresetListChangeCallback(const preset_list_signal_t::slot_type& cb);
|
||||
|
||||
// Emitted when a preset gets loaded or saved.
|
||||
|
||||
preset_name_list_t mPresetNames;
|
||||
|
||||
preset_list_signal_t mPresetListChangeCameraSignal;
|
||||
preset_list_signal_t mPresetListChangeSignal;
|
||||
|
||||
private:
|
||||
LOG_CLASS(LLPresetsManager);
|
||||
LOG_CLASS(LLPresetsManager);
|
||||
|
||||
void getControlNames(std::vector<std::string>& names);
|
||||
static void settingChanged();
|
||||
|
||||
boost::signals2::connection mCameraChangedSignal;
|
||||
|
||||
static bool mCameraDirty;
|
||||
};
|
||||
|
||||
#endif // LL_PRESETSMANAGER_H
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include "llfloaterbuycurrency.h"
|
||||
#include "llbuycurrencyhtml.h"
|
||||
#include "llpanelnearbymedia.h"
|
||||
#include "llpanelpresetscamerapulldown.h"
|
||||
#include "llpanelpresetspulldown.h"
|
||||
#include "llpanelvolumepulldown.h"
|
||||
#include "llfloaterregioninfo.h"
|
||||
|
|
@ -171,8 +172,11 @@ BOOL LLStatusBar::postBuild()
|
|||
|
||||
mBtnStats = getChildView("stat_btn");
|
||||
|
||||
mIconPresets = getChild<LLIconCtrl>( "presets_icon" );
|
||||
mIconPresets->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
mIconPresetsCamera = getChild<LLIconCtrl>( "presets_icon_camera" );
|
||||
mIconPresetsCamera->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresetsCamera, this));
|
||||
|
||||
mIconPresetsGraphic = getChild<LLIconCtrl>( "presets_icon_graphic" );
|
||||
mIconPresetsGraphic->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterPresets, this));
|
||||
|
||||
mBtnVolume = getChild<LLButton>( "volume_btn" );
|
||||
mBtnVolume->setClickedCallback( onClickVolume, this );
|
||||
|
|
@ -227,6 +231,11 @@ BOOL LLStatusBar::postBuild()
|
|||
mSGPacketLoss = LLUICtrlFactory::create<LLStatGraph>(pgp);
|
||||
addChild(mSGPacketLoss);
|
||||
|
||||
mPanelPresetsCameraPulldown = new LLPanelPresetsCameraPulldown();
|
||||
addChild(mPanelPresetsCameraPulldown);
|
||||
mPanelPresetsCameraPulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
|
||||
mPanelPresetsCameraPulldown->setVisible(FALSE);
|
||||
|
||||
mPanelPresetsPulldown = new LLPanelPresetsPulldown();
|
||||
addChild(mPanelPresetsPulldown);
|
||||
mPanelPresetsPulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT);
|
||||
|
|
@ -325,7 +334,8 @@ void LLStatusBar::setVisibleForMouselook(bool visible)
|
|||
mSGBandwidth->setVisible(visible);
|
||||
mSGPacketLoss->setVisible(visible);
|
||||
setBackgroundVisible(visible);
|
||||
mIconPresets->setVisible(visible);
|
||||
mIconPresetsCamera->setVisible(visible);
|
||||
mIconPresetsGraphic->setVisible(visible);
|
||||
}
|
||||
|
||||
void LLStatusBar::debitBalance(S32 debit)
|
||||
|
|
@ -470,10 +480,34 @@ void LLStatusBar::onClickBuyCurrency()
|
|||
LLFirstUse::receiveLindens(false);
|
||||
}
|
||||
|
||||
void LLStatusBar::onMouseEnterPresetsCamera()
|
||||
{
|
||||
LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder");
|
||||
LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon_camera" );
|
||||
LLRect icon_rect = icon->getRect();
|
||||
LLRect pulldown_rect = mPanelPresetsCameraPulldown->getRect();
|
||||
pulldown_rect.setLeftTopAndSize(icon_rect.mLeft -
|
||||
(pulldown_rect.getWidth() - icon_rect.getWidth()),
|
||||
icon_rect.mBottom,
|
||||
pulldown_rect.getWidth(),
|
||||
pulldown_rect.getHeight());
|
||||
|
||||
pulldown_rect.translate(popup_holder->getRect().getWidth() - pulldown_rect.mRight, 0);
|
||||
mPanelPresetsCameraPulldown->setShape(pulldown_rect);
|
||||
|
||||
// show the master presets pull-down
|
||||
LLUI::clearPopups();
|
||||
LLUI::addPopup(mPanelPresetsCameraPulldown);
|
||||
mPanelNearByMedia->setVisible(FALSE);
|
||||
mPanelVolumePulldown->setVisible(FALSE);
|
||||
mPanelPresetsPulldown->setVisible(FALSE);
|
||||
mPanelPresetsCameraPulldown->setVisible(TRUE);
|
||||
}
|
||||
|
||||
void LLStatusBar::onMouseEnterPresets()
|
||||
{
|
||||
LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder");
|
||||
LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon" );
|
||||
LLIconCtrl* icon = getChild<LLIconCtrl>( "presets_icon_graphic" );
|
||||
LLRect icon_rect = icon->getRect();
|
||||
LLRect pulldown_rect = mPanelPresetsPulldown->getRect();
|
||||
pulldown_rect.setLeftTopAndSize(icon_rect.mLeft -
|
||||
|
|
@ -512,6 +546,7 @@ void LLStatusBar::onMouseEnterVolume()
|
|||
// show the master volume pull-down
|
||||
LLUI::clearPopups();
|
||||
LLUI::addPopup(mPanelVolumePulldown);
|
||||
mPanelPresetsCameraPulldown->setVisible(FALSE);
|
||||
mPanelPresetsPulldown->setVisible(FALSE);
|
||||
mPanelNearByMedia->setVisible(FALSE);
|
||||
mPanelVolumePulldown->setVisible(TRUE);
|
||||
|
|
@ -536,6 +571,7 @@ void LLStatusBar::onMouseEnterNearbyMedia()
|
|||
LLUI::clearPopups();
|
||||
LLUI::addPopup(mPanelNearByMedia);
|
||||
|
||||
mPanelPresetsCameraPulldown->setVisible(FALSE);
|
||||
mPanelPresetsPulldown->setVisible(FALSE);
|
||||
mPanelVolumePulldown->setVisible(FALSE);
|
||||
mPanelNearByMedia->setVisible(TRUE);
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ class LLUICtrl;
|
|||
class LLUUID;
|
||||
class LLFrameTimer;
|
||||
class LLStatGraph;
|
||||
class LLPanelPresetsCameraPulldown;
|
||||
class LLPanelPresetsPulldown;
|
||||
class LLPanelVolumePulldown;
|
||||
class LLPanelNearByMedia;
|
||||
|
|
@ -91,6 +92,7 @@ private:
|
|||
void onClickBuyCurrency();
|
||||
void onVolumeChanged(const LLSD& newvalue);
|
||||
|
||||
void onMouseEnterPresetsCamera();
|
||||
void onMouseEnterPresets();
|
||||
void onMouseEnterVolume();
|
||||
void onMouseEnterNearbyMedia();
|
||||
|
|
@ -106,7 +108,8 @@ private:
|
|||
LLStatGraph *mSGPacketLoss;
|
||||
|
||||
LLView *mBtnStats;
|
||||
LLIconCtrl *mIconPresets;
|
||||
LLIconCtrl *mIconPresetsCamera;
|
||||
LLIconCtrl *mIconPresetsGraphic;
|
||||
LLButton *mBtnVolume;
|
||||
LLTextBox *mBoxBalance;
|
||||
LLButton *mMediaToggle;
|
||||
|
|
@ -119,6 +122,7 @@ private:
|
|||
S32 mSquareMetersCommitted;
|
||||
LLFrameTimer* mBalanceTimer;
|
||||
LLFrameTimer* mHealthTimer;
|
||||
LLPanelPresetsCameraPulldown* mPanelPresetsCameraPulldown;
|
||||
LLPanelPresetsPulldown* mPanelPresetsPulldown;
|
||||
LLPanelVolumePulldown* mPanelVolumePulldown;
|
||||
LLPanelNearByMedia* mPanelNearByMedia;
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@
|
|||
#include "llfloaterperms.h"
|
||||
#include "llfloaterpostprocess.h"
|
||||
#include "llfloaterpreference.h"
|
||||
#include "llfloaterpreferenceviewadvanced.h"
|
||||
#include "llfloaterpreviewtrash.h"
|
||||
#include "llfloaterproperties.h"
|
||||
#include "llfloaterregiondebugconsole.h"
|
||||
|
|
@ -295,6 +296,7 @@ void LLViewerFloaterReg::registerFloaters()
|
|||
LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
|
||||
LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
|
||||
LLFloaterReg::add("prefs_graphics_advanced", "floater_preferences_graphics_advanced.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceGraphicsAdvanced>);
|
||||
LLFloaterReg::add("prefs_view_advanced", "floater_preferences_view_advanced.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceViewAdvanced>);
|
||||
LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
|
||||
LLFloaterReg::add("prefs_spellchecker_import", "floater_spellcheck_import.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSpellCheckerImport>);
|
||||
LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTranslationSettings>);
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 366 B After Width: | Height: | Size: 366 B |
|
|
@ -98,7 +98,7 @@ with the same filename but different name
|
|||
<texture name="BuyArrow_Over" file_name="navbar/BuyArrow_Over.png" preload="true" scale.left="0" scale.top="1" scale.right="0" scale.bottom="0" />
|
||||
<texture name="BuyArrow_Press" file_name="navbar/BuyArrow_Press.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
|
||||
|
||||
<texture name="Cam_Avatar_Off" file_name="bottomtray/Cam_Avatar_Off.png" preload="false" />
|
||||
<texture name="Cam_Avatar_Off" file_name="bottomtray/Cam_Avatar_Off.png" preload="true" />
|
||||
<texture name="Cam_FreeCam_Off" file_name="bottomtray/Cam_FreeCam_Off.png" preload="false" />
|
||||
<texture name="Cam_Orbit_Off" file_name="bottomtray/Cam_Orbit_Off.png" preload="false" />
|
||||
<texture name="Cam_Pan_Off" file_name="bottomtray/Cam_Pan_Off.png" preload="false" />
|
||||
|
|
@ -207,7 +207,7 @@ with the same filename but different name
|
|||
|
||||
<texture name="Facebook_Icon" file_name="icons/Facebook.png" preload="false" />
|
||||
|
||||
<texture name="Presets_Icon" file_name="icons/Presets_Icon.png" preload="true" />
|
||||
<texture name="Presets_Icon_Graphic" file_name="icons/Presets_Icon_Graphic.png" preload="true" />
|
||||
|
||||
<texture name="Favorite_Star_Active" file_name="navbar/Favorite_Star_Active.png" preload="false" />
|
||||
<texture name="Favorite_Star_Off" file_name="navbar/Favorite_Star_Off.png" preload="false" />
|
||||
|
|
|
|||
|
|
@ -145,8 +145,26 @@
|
|||
left="0"
|
||||
mouse_opaque="false"
|
||||
name="zoom"
|
||||
top="20"
|
||||
top="0"
|
||||
width="226">
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="CameraAngle"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top="20"
|
||||
increment="0.025"
|
||||
initial_value="1.57"
|
||||
layout="topleft"
|
||||
label_width="112"
|
||||
label="View angle"
|
||||
left="10"
|
||||
max_val="1.6"
|
||||
min_val="0.17"
|
||||
name="camera_fov"
|
||||
show_text="false"
|
||||
width="200" />
|
||||
<joystick_rotate
|
||||
follows="top|left"
|
||||
height="78"
|
||||
|
|
@ -157,7 +175,7 @@
|
|||
sound_flags="3"
|
||||
visible="true"
|
||||
tool_tip="Orbit camera around focus"
|
||||
top="20"
|
||||
top_delta="20"
|
||||
width="78" />
|
||||
<button
|
||||
follows="top|left"
|
||||
|
|
@ -169,7 +187,7 @@
|
|||
left_pad="14"
|
||||
name="zoom_plus_btn"
|
||||
width="18"
|
||||
top="18">
|
||||
top="38">
|
||||
<commit_callback
|
||||
function="Zoom.plus" />
|
||||
<mouse_held_callback
|
||||
|
|
@ -214,7 +232,7 @@
|
|||
scale_image="false"
|
||||
sound_flags="3"
|
||||
tool_tip="Move camera up and down, left and right"
|
||||
top="20"
|
||||
top="40"
|
||||
width="78"/>
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
@ -227,18 +245,15 @@
|
|||
name="buttons"
|
||||
width="226">
|
||||
<button
|
||||
height="23"
|
||||
label=""
|
||||
name="open_prefs_btn"
|
||||
image_overlay="Icon_Gear_Foreground"
|
||||
tool_tip = "Open view preferences"
|
||||
layout="topleft"
|
||||
left="70"
|
||||
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">
|
||||
height="23"
|
||||
width="28">
|
||||
<button.commit_callback
|
||||
function="Presets.GoViewPrefs" />
|
||||
</button>
|
||||
<button
|
||||
height="23"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
height="130"
|
||||
help_topic="floater_delete_preset"
|
||||
layout="topleft"
|
||||
name="Delete Pref Preset"
|
||||
name="delete_pref_preset"
|
||||
save_rect="true"
|
||||
title="DELETE PREF PRESET"
|
||||
width="300">
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
height="130"
|
||||
help_topic="floater_load_preset"
|
||||
layout="topleft"
|
||||
name="Load Pref Preset"
|
||||
name="load_pref_preset"
|
||||
save_rect="true"
|
||||
title="LOAD PREF PRESET"
|
||||
width="300">
|
||||
|
|
|
|||
|
|
@ -85,12 +85,19 @@ https://accounts.secondlife.com/change_email/
|
|||
help_topic="preferences_chat_tab"
|
||||
name="chat" />
|
||||
<panel
|
||||
class="panel_preference"
|
||||
class="panel_preference_view"
|
||||
filename="panel_preferences_move.xml"
|
||||
label="Move & View"
|
||||
label="Move"
|
||||
layout="topleft"
|
||||
help_topic="preferences_move_tab"
|
||||
name="move" />
|
||||
<panel
|
||||
class="panel_preference_view"
|
||||
filename="panel_preferences_view.xml"
|
||||
label="View"
|
||||
layout="topleft"
|
||||
help_topic="preferences_view_tab"
|
||||
name="view" />
|
||||
<panel
|
||||
class="panel_preference"
|
||||
filename="panel_preferences_alerts.xml"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,140 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
height="170"
|
||||
layout="topleft"
|
||||
name="floaterpreferencesviewadvanced"
|
||||
help_topic="floaterviewadvanced"
|
||||
title="ADJUST CAMERA VIEW"
|
||||
save_rect="true"
|
||||
width="280">
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top="10"
|
||||
width="100">
|
||||
Camera offset:
|
||||
</text>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="X"
|
||||
label_width="12"
|
||||
follows="topl|eft"
|
||||
left="10"
|
||||
name="camera_x"
|
||||
top_pad="5"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Y"
|
||||
label_width="12"
|
||||
follows="topl|eft"
|
||||
name="camera_y"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Z"
|
||||
label_width="12"
|
||||
follows="topl|eft"
|
||||
name="camera_z"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
top_pad="20"
|
||||
width="100">
|
||||
Focus offset:
|
||||
</text>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="X"
|
||||
label_width="12"
|
||||
follows="topl|eft"
|
||||
left="10"
|
||||
name="focus_x"
|
||||
top_pad="5"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Y"
|
||||
label_width="12"
|
||||
follows="topl|eft"
|
||||
name="focus_y"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<spinner
|
||||
height="20"
|
||||
label="Z"
|
||||
label_width="12"
|
||||
follows="topl|eft"
|
||||
name="focus_z"
|
||||
left_pad="20"
|
||||
min_val="-1e+007"
|
||||
max_val="1e+007"
|
||||
width="70">
|
||||
<spinner.commit_callback
|
||||
function="CommitSettings" />
|
||||
</spinner>
|
||||
|
||||
<button
|
||||
follows="left|top"
|
||||
height="23"
|
||||
label="OK"
|
||||
layout="topleft"
|
||||
left="90"
|
||||
name="ok"
|
||||
top_pad="30"
|
||||
width="90">
|
||||
<button.commit_callback
|
||||
function="Ok"/>
|
||||
</button>
|
||||
<button
|
||||
follows="left|top"
|
||||
height="23"
|
||||
label="Cancel"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="cancel"
|
||||
width="90">
|
||||
<button.commit_callback
|
||||
function="Cancel"/>
|
||||
</button>
|
||||
</floater>
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
height="145"
|
||||
help_topic="floater_save_preset"
|
||||
layout="topleft"
|
||||
name="Save Pref Preset"
|
||||
name="save_pref_preset"
|
||||
save_rect="true"
|
||||
title="SAVE PREF PRESET"
|
||||
width="300">
|
||||
|
|
|
|||
|
|
@ -293,6 +293,21 @@
|
|||
width="65">
|
||||
0
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_delta="68"
|
||||
name="IndirectMaxComplexityLink"
|
||||
mouse_opaque="false"
|
||||
top_delta="0"
|
||||
width="120">
|
||||
[https://community.secondlife.com/t5/Featured-News/Why-are-all-these-people-made-of-colored-jelly/ba-p/3031255 What's this?]
|
||||
</text>
|
||||
|
||||
|
||||
<check_box
|
||||
control_name="AlwaysRenderFriends"
|
||||
height="16"
|
||||
|
|
@ -345,7 +360,6 @@
|
|||
function="Pref.PrefLoad"
|
||||
parameter="graphic"/>
|
||||
</button>
|
||||
min_val="0.125"
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
|
|
|
|||
|
|
@ -2,100 +2,24 @@
|
|||
<panel
|
||||
border="true"
|
||||
follows="left|top|right|bottom"
|
||||
height="408"
|
||||
height="418"
|
||||
label="Move"
|
||||
layout="topleft"
|
||||
left="102"
|
||||
name="move_panel"
|
||||
top="1"
|
||||
width="517">
|
||||
|
||||
<icon
|
||||
follows="left|top"
|
||||
height="18"
|
||||
image_name="Cam_FreeCam_Off"
|
||||
layout="topleft"
|
||||
name="camera_icon"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
width="18"
|
||||
left="30"
|
||||
top="10"/>
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="CameraAngle"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.025"
|
||||
initial_value="1.57"
|
||||
height="18"
|
||||
image_name="Move_Walk_Off"
|
||||
layout="topleft"
|
||||
label_width="100"
|
||||
label="View angle"
|
||||
left_pad="30"
|
||||
max_val="2.97"
|
||||
min_val="0.17"
|
||||
name="camera_fov"
|
||||
show_text="false"
|
||||
width="240" />
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="CameraOffsetScale"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.025"
|
||||
initial_value="1"
|
||||
layout="topleft"
|
||||
label="Distance"
|
||||
left_delta="0"
|
||||
label_width="100"
|
||||
max_val="3"
|
||||
min_val="0.5"
|
||||
name="camera_offset_scale"
|
||||
show_text="false"
|
||||
width="240"
|
||||
top_pad="5"/>
|
||||
<text
|
||||
follows="left|top"
|
||||
type="string"
|
||||
length="1"
|
||||
height="10"
|
||||
left="80"
|
||||
name="heading2"
|
||||
width="270"
|
||||
top_pad="5">
|
||||
Automatic position for:
|
||||
</text>
|
||||
<check_box
|
||||
control_name="EditCameraMovement"
|
||||
height="20"
|
||||
follows="left|top"
|
||||
label="Build/Edit"
|
||||
layout="topleft"
|
||||
left_delta="30"
|
||||
name="edit_camera_movement"
|
||||
tool_tip="Use automatic camera positioning when entering and exiting edit mode"
|
||||
width="280"
|
||||
top_pad="5" />
|
||||
<check_box
|
||||
control_name="AppearanceCameraMovement"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Appearance"
|
||||
layout="topleft"
|
||||
name="appearance_camera_movement"
|
||||
tool_tip="Use automatic camera positioning while in edit mode"
|
||||
width="242" />
|
||||
<icon
|
||||
follows="left|top"
|
||||
height="18"
|
||||
image_name="Move_Walk_Off"
|
||||
layout="topleft"
|
||||
name="avatar_icon"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
width="18"
|
||||
top_pad="10"
|
||||
name="avatar_icon"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
width="18"
|
||||
top_pad="4"
|
||||
left="30" />
|
||||
<text
|
||||
follows="left|top"
|
||||
|
|
@ -264,10 +188,11 @@
|
|||
label="Other Devices"
|
||||
left="30"
|
||||
name="joystick_setup_button"
|
||||
top="30"
|
||||
top_pad="5"
|
||||
width="155">
|
||||
<button.commit_callback
|
||||
function="Floater.Show"
|
||||
parameter="pref_joystick" />
|
||||
</button>
|
||||
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,185 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel
|
||||
border="true"
|
||||
follows="left|top|right|bottom"
|
||||
height="418"
|
||||
label="View"
|
||||
layout="topleft"
|
||||
left="102"
|
||||
name="view_panel"
|
||||
top="1"
|
||||
width="517">
|
||||
|
||||
<icon
|
||||
follows="left|top"
|
||||
height="18"
|
||||
image_name="Cam_FreeCam_Off"
|
||||
layout="topleft"
|
||||
name="camera_icon"
|
||||
mouse_opaque="false"
|
||||
visible="true"
|
||||
width="18"
|
||||
left="30"
|
||||
top="4"/>
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="80"
|
||||
top_delta="0"
|
||||
width="100">
|
||||
Preset in use:
|
||||
</text>
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left_delta="100"
|
||||
name="preset_camera_text"
|
||||
width="120">
|
||||
(None)
|
||||
</text>
|
||||
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="CameraAngle"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
top_pad="5"
|
||||
increment="0.025"
|
||||
initial_value="1.57"
|
||||
layout="topleft"
|
||||
label_width="100"
|
||||
label="View angle"
|
||||
left="80"
|
||||
max_val="2.97"
|
||||
min_val="0.17"
|
||||
name="camera_fov"
|
||||
show_text="false"
|
||||
width="240" />
|
||||
<slider
|
||||
can_edit_text="true"
|
||||
control_name="CameraOffsetScale"
|
||||
decimal_digits="2"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
increment="0.025"
|
||||
initial_value="1"
|
||||
layout="topleft"
|
||||
label="Distance"
|
||||
left_delta="0"
|
||||
label_width="100"
|
||||
max_val="3"
|
||||
min_val="0.5"
|
||||
name="camera_offset_scale"
|
||||
show_text="false"
|
||||
width="240"
|
||||
top_pad="5"/>
|
||||
<text
|
||||
follows="left|top"
|
||||
type="string"
|
||||
length="1"
|
||||
height="10"
|
||||
left="80"
|
||||
name="heading2"
|
||||
width="200"
|
||||
top_pad="5">
|
||||
Automatic position for:
|
||||
</text>
|
||||
|
||||
<spinner
|
||||
control_name="CameraOpacity"
|
||||
decimal_digits="1"
|
||||
follows="top|left|right"
|
||||
height="24"
|
||||
max_val="1.0"
|
||||
min_val="0.0"
|
||||
increment="0.1"
|
||||
initial_value="1.0"
|
||||
label="Camera controls opacity:"
|
||||
label_width="180"
|
||||
layout="topleft"
|
||||
top_pad="-10"
|
||||
left_pad="10"
|
||||
width="220" />
|
||||
|
||||
<check_box
|
||||
control_name="EditCameraMovement"
|
||||
height="20"
|
||||
follows="left|top"
|
||||
label="Build/Edit"
|
||||
layout="topleft"
|
||||
left="100"
|
||||
name="edit_camera_movement"
|
||||
tool_tip="Use automatic camera positioning when entering and exiting edit mode"
|
||||
width="280"
|
||||
top_pad="-10" />
|
||||
<check_box
|
||||
control_name="AppearanceCameraMovement"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
label="Appearance"
|
||||
layout="topleft"
|
||||
name="appearance_camera_movement"
|
||||
tool_tip="Use automatic camera positioning while in edit mode"
|
||||
width="242" />
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Advanced..."
|
||||
layout="topleft"
|
||||
left_pad="-102"
|
||||
name="PreferencesViewAdvanced"
|
||||
tool_tip="Adjust camera positioning"
|
||||
width="115">
|
||||
<button.commit_callback
|
||||
function="Floater.Show"
|
||||
parameter="prefs_view_advanced" />
|
||||
</button>
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Save settings as a preset..."
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="PrefCameraSaveButton"
|
||||
top_pad="10"
|
||||
width="200">
|
||||
<button.commit_callback
|
||||
function="Pref.PrefSave"
|
||||
parameter="camera" />
|
||||
</button>
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Load preset..."
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="PrefCameraLoadButton"
|
||||
top_delta="0"
|
||||
width="115">
|
||||
<button.commit_callback
|
||||
function="Pref.PrefLoad"
|
||||
parameter="camera"/>
|
||||
</button>
|
||||
|
||||
<button
|
||||
follows="top|left"
|
||||
height="23"
|
||||
label="Delete preset..."
|
||||
layout="topleft"
|
||||
left_pad="10"
|
||||
name="PrefCameraDeleteButton"
|
||||
top_delta="0"
|
||||
width="115">
|
||||
<button.commit_callback
|
||||
function="Pref.PrefDelete"
|
||||
parameter="camera"/>
|
||||
</button>
|
||||
</panel>
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<?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="155"
|
||||
layout="topleft"
|
||||
name="presets_camera_pulldown"
|
||||
width="225">
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="12"
|
||||
layout="topleft"
|
||||
top="4"
|
||||
left_delta="5"
|
||||
font.style="BOLD"
|
||||
name="Camera Presets"
|
||||
width="120">
|
||||
Camera Presets
|
||||
</text>
|
||||
<scroll_list
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
column_padding="0"
|
||||
height="100"
|
||||
width="215"
|
||||
draw_heading="false"
|
||||
draw_stripes="false"
|
||||
bg_stripe_color="0.25 0.25 0.25 0.25"
|
||||
top_delta="15"
|
||||
left_delta="0"
|
||||
name="preset_camera_list">
|
||||
<scroll_list.columns
|
||||
name="icon"
|
||||
width="16" />
|
||||
<scroll_list.columns
|
||||
relative_width="1"
|
||||
name="preset_name" />
|
||||
<scroll_list.commit_callback
|
||||
function="PresetsCamera.RowClick" />
|
||||
</scroll_list>
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="horiz_separator"
|
||||
top_delta="105"
|
||||
width="215" />
|
||||
<button
|
||||
name="open_prefs_btn"
|
||||
label="Open View Preferences"
|
||||
tool_tip = "Bring up view preferences"
|
||||
top_delta="5"
|
||||
left="15"
|
||||
height="20"
|
||||
width="200">
|
||||
<button.commit_callback
|
||||
function="Presets.GoViewPrefs" />
|
||||
</button>
|
||||
</panel>
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
</panel.string>
|
||||
<panel
|
||||
height="18"
|
||||
left="-416"
|
||||
left="-458"
|
||||
width="185"
|
||||
top="1"
|
||||
follows="right|top"
|
||||
|
|
@ -108,10 +108,18 @@
|
|||
<icon
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_name="Presets_Icon"
|
||||
image_name="Cam_Avatar_Off"
|
||||
left_pad="8"
|
||||
top="2"
|
||||
name="presets_icon"
|
||||
name="presets_icon_camera"
|
||||
width="18" />
|
||||
<icon
|
||||
follows="right|top"
|
||||
height="16"
|
||||
image_name="Presets_Icon_Graphic"
|
||||
left_pad="8"
|
||||
top="2"
|
||||
name="presets_icon_graphic"
|
||||
width="18" />
|
||||
<button
|
||||
follows="right|top"
|
||||
|
|
|
|||
|
|
@ -77,6 +77,9 @@ class ViewerManifest(LLManifest):
|
|||
contributor_names = self.extract_names(contributions_path)
|
||||
self.put_in_file(contributor_names, "contributors.txt", src=contributions_path)
|
||||
|
||||
# ... and the default camera position settings
|
||||
self.path("camera")
|
||||
|
||||
# ... and the entire windlight directory
|
||||
self.path("windlight")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue