diff options
author | Andrew Dyukov <adyukov@productengine.com> | 2010-05-27 18:36:07 +0300 |
---|---|---|
committer | Andrew Dyukov <adyukov@productengine.com> | 2010-05-27 18:36:07 +0300 |
commit | 097f9711f22df449c11b3dcd960186a206bcd3ac (patch) | |
tree | 121443d70e14d3b496c7c41128f6136979d94430 | |
parent | 6fc170b12fa2663d7f4cc850ff30173a7ce780fc (diff) |
EXT-2260 FIXED Changed camera floater according to new style
- Implemented new widget- panel_camera_item, to use in camera floater. They are used inside of two panels.
Their order is configurable via XML. Mouse down callbacks and images which are used for selected and and unselected
items are also set in XML.
- Now there are only 3 buttons instead of four at the bottom of the floater- pan and orbit are now shown simultaneously.
- Implemented correct work of object view after moving from camera modes to presets list (and back). It wasn't
workin completely correct in old version of floater.
- Integrated new art.
Reviewed by Igor Borovkov at https://codereview.productengine.com/secondlife/r/436/
--HG--
branch : product-engine
19 files changed, 529 insertions, 360 deletions
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 1603ff0a54..a057421135 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -168,7 +168,7 @@ LLBottomTray::LLBottomTray(const LLSD&) LLUICtrlFactory::getInstance()->buildPanel(this,"panel_bottomtray.xml"); - LLUICtrl::CommitCallbackRegistry::defaultRegistrar().add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraPresets, _2)); + 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 diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index d84ebef1dd..ca346138fb 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -47,15 +47,19 @@ #include "lltoolfocus.h" #include "llslider.h" +static LLDefaultChildRegistry::Register<LLPanelCameraItem> r("panel_camera_item"); + // Constants const F32 CAMERA_BUTTON_DELAY = 0.0f; #define ORBIT "cam_rotate_stick" #define PAN "cam_track_stick" #define ZOOM "zoom" -#define PRESETS "camera_presets" +#define PRESETS "preset_views_list" #define CONTROLS "controls" +bool LLFloaterCamera::sFreeCamera = false; + // Zoom the camera in and out class LLPanelCameraZoom : public LLPanel @@ -78,6 +82,68 @@ private: LLSlider* mSlider; }; +LLPanelCameraItem::Params::Params() +: icon_over("icon_over"), + icon_selected("icon_selected"), + picture("picture"), + text("text"), + selected_picture("selected_picture"), + mousedown_callback("mousedown_callback") +{ +} + +LLPanelCameraItem::LLPanelCameraItem(const LLPanelCameraItem::Params& p) +: LLPanel(p) +{ + LLIconCtrl::Params icon_params = p.picture; + mPicture = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mPicture); + + icon_params = p.icon_over; + mIconOver = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mIconOver); + + icon_params = p.icon_selected; + mIconSelected = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mIconSelected); + + icon_params = p.selected_picture; + mPictureSelected = LLUICtrlFactory::create<LLIconCtrl>(icon_params); + addChild(mPictureSelected); + + LLTextBox::Params text_params = p.text; + mText = LLUICtrlFactory::create<LLTextBox>(text_params); + addChild(mText); + + if (p.mousedown_callback.isProvided()) + { + setCommitCallback(initCommitCallback(p.mousedown_callback)); + } +} + +BOOL LLPanelCameraItem::postBuild() +{ + setMouseEnterCallback(boost::bind(&LLPanelCameraItem::childSetVisible, this, "hovered_icon", true)); + setMouseLeaveCallback(boost::bind(&LLPanelCameraItem::childSetVisible, this, "hovered_icon", false)); + setMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); + setRightMouseDownCallback(boost::bind(&LLPanelCameraItem::onAnyMouseClick, this)); + return TRUE; +} + +void LLPanelCameraItem::onAnyMouseClick() +{ + if (mCommitSignal) (*mCommitSignal)(this, LLSD()); +} + +void LLPanelCameraItem::setValue(const LLSD& value) +{ + if (!value.isMap()) return;; + if (!value.has("selected")) return; + childSetVisible("selected_icon", value["selected"]); + childSetVisible("picture", !value["selected"]); + childSetVisible("selected_picture", value["selected"]); +} + static LLRegisterPanelClassWrapper<LLPanelCameraZoom> t_camera_zoom_panel("camera_zoom_panel"); //------------------------------------------------------------------------------- @@ -153,16 +219,11 @@ void activate_camera_tool() return false; } -bool LLFloaterCamera::inAvatarViewMode() -{ - return mCurrMode == CAMERA_CTRL_MODE_AVATAR_VIEW; -} - void LLFloaterCamera::resetCameraMode() { LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); if (!floater_camera) return; - floater_camera->switchMode(CAMERA_CTRL_MODE_ORBIT); + floater_camera->switchMode(CAMERA_CTRL_MODE_PAN); } void LLFloaterCamera::update() @@ -180,9 +241,13 @@ void LLFloaterCamera::toPrevMode() /*static*/ void LLFloaterCamera::onLeavingMouseLook() { LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (floater_camera && floater_camera->inFreeCameraMode()) + if (floater_camera) { - activate_camera_tool(); + floater_camera->updateItemsSelection(); + if(floater_camera->inFreeCameraMode()) + { + activate_camera_tool(); + } } } @@ -216,24 +281,24 @@ void LLFloaterCamera::onClose(bool app_quitting) //We don't care of camera mode if app is quitting if(app_quitting) return; - // When mCurrMode is in CAMERA_CTRL_MODE_ORBIT + // When mCurrMode is in CAMERA_CTRL_MODE_PAN // switchMode won't modify mPrevMode, so force it here. // It is needed to correctly return to previous mode on open, see EXT-2727. - if (mCurrMode == CAMERA_CTRL_MODE_ORBIT) - mPrevMode = CAMERA_CTRL_MODE_ORBIT; + 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_ORBIT); + switchMode(CAMERA_CTRL_MODE_PAN); mClosed = TRUE; } LLFloaterCamera::LLFloaterCamera(const LLSD& val) : LLTransientDockableFloater(NULL, true, val), mClosed(FALSE), - mCurrMode(CAMERA_CTRL_MODE_ORBIT), - mPrevMode(CAMERA_CTRL_MODE_ORBIT) + mCurrMode(CAMERA_CTRL_MODE_PAN), + mPrevMode(CAMERA_CTRL_MODE_PAN) { } @@ -247,16 +312,32 @@ BOOL LLFloaterCamera::postBuild() mZoom = getChild<LLPanelCameraZoom>(ZOOM); mTrack = getChild<LLJoystickCameraTrack>(PAN); - assignButton2Mode(CAMERA_CTRL_MODE_ORBIT, "orbit_btn"); + assignButton2Mode(CAMERA_CTRL_MODE_MODES, "avatarview_btn"); assignButton2Mode(CAMERA_CTRL_MODE_PAN, "pan_btn"); - assignButton2Mode(CAMERA_CTRL_MODE_FREE_CAMERA, "freecamera_btn"); - assignButton2Mode(CAMERA_CTRL_MODE_AVATAR_VIEW, "avatarview_btn"); + assignButton2Mode(CAMERA_CTRL_MODE_PRESETS, "presets_btn"); update(); return LLDockableFloater::postBuild(); } +void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel) +{ + // copying child list and then iterating over a copy, because list itself + // is changed in process + const child_list_t child_list = *panel->getChildList(); + child_list_t::const_reverse_iterator iter = child_list.rbegin(); + child_list_t::const_reverse_iterator end = child_list.rend(); + for ( ; iter != end; ++iter) + { + LLView* view = *iter; + LLPanel* item = dynamic_cast<LLPanel*>(view); + if (panel) + list->addItem(item); + } + +} + ECameraControlMode LLFloaterCamera::determineMode() { LLTool* curr_tool = LLToolMgr::getInstance()->getCurrentTool(); @@ -267,10 +348,10 @@ ECameraControlMode LLFloaterCamera::determineMode() if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) { - return CAMERA_CTRL_MODE_AVATAR_VIEW; + return CAMERA_CTRL_MODE_PRESETS; } - return CAMERA_CTRL_MODE_ORBIT; + return CAMERA_CTRL_MODE_PAN; } @@ -301,21 +382,16 @@ void LLFloaterCamera::setModeTitle(const ECameraControlMode mode) std::string title; switch(mode) { - case CAMERA_CTRL_MODE_ORBIT: - title = getString("orbit_mode_title"); + 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_AVATAR_VIEW: - title = getString("avatar_view_mode_title"); - break; - case CAMERA_CTRL_MODE_FREE_CAMERA: - title = getString("free_mode_title"); + case CAMERA_CTRL_MODE_PRESETS: + title = getString("presets_mode_title"); break; default: - // title should be provided for all modes - llassert(false); break; } setTitle(title); @@ -327,19 +403,28 @@ void LLFloaterCamera::switchMode(ECameraControlMode mode) switch (mode) { - case CAMERA_CTRL_MODE_ORBIT: - clear_camera_tool(); + case CAMERA_CTRL_MODE_MODES: + if(sFreeCamera) + { + switchMode(CAMERA_CTRL_MODE_FREE_CAMERA); + } break; case CAMERA_CTRL_MODE_PAN: + sFreeCamera = false; clear_camera_tool(); break; case CAMERA_CTRL_MODE_FREE_CAMERA: + sFreeCamera = true; activate_camera_tool(); break; - case CAMERA_CTRL_MODE_AVATAR_VIEW: + case CAMERA_CTRL_MODE_PRESETS: + if(sFreeCamera) + { + switchMode(CAMERA_CTRL_MODE_FREE_CAMERA); + } break; default: @@ -368,66 +453,80 @@ void LLFloaterCamera::assignButton2Mode(ECameraControlMode mode, const std::stri void LLFloaterCamera::updateState() { + childSetVisible(ZOOM, CAMERA_CTRL_MODE_PAN == mCurrMode); + + bool show_presets = (CAMERA_CTRL_MODE_PRESETS == mCurrMode) || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode + && CAMERA_CTRL_MODE_PRESETS == mPrevMode); + childSetVisible(PRESETS, show_presets); + + bool show_camera_modes = CAMERA_CTRL_MODE_MODES == mCurrMode || (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode + && CAMERA_CTRL_MODE_MODES == mPrevMode); + childSetVisible("camera_modes_list", show_camera_modes); + + updateItemsSelection(); + + if (CAMERA_CTRL_MODE_FREE_CAMERA == mCurrMode) + { + return; + } + //updating buttons std::map<ECameraControlMode, LLButton*>::const_iterator iter = mMode2Button.begin(); for (; iter != mMode2Button.end(); ++iter) { iter->second->setToggleState(iter->first == mCurrMode); } - - childSetVisible(ORBIT, CAMERA_CTRL_MODE_ORBIT == mCurrMode); - childSetVisible(PAN, CAMERA_CTRL_MODE_PAN == mCurrMode); - childSetVisible(ZOOM, CAMERA_CTRL_MODE_AVATAR_VIEW != mCurrMode); - childSetVisible(PRESETS, CAMERA_CTRL_MODE_AVATAR_VIEW == mCurrMode); - - updateCameraPresetButtons(); setModeTitle(mCurrMode); - - - //hiding or showing the panel with controls by reshaping the floater - bool showControls = CAMERA_CTRL_MODE_FREE_CAMERA != mCurrMode; - if (showControls == childIsVisible(CONTROLS)) return; - - childSetVisible(CONTROLS, showControls); - - LLRect rect = getRect(); - LLRect controls_rect; - if (childGetRect(CONTROLS, controls_rect)) - { - S32 floater_header_size = getHeaderHeight(); - S32 height = controls_rect.getHeight() - floater_header_size; - S32 newHeight = rect.getHeight(); - - if (showControls) - { - newHeight += height; - } - else - { - newHeight -= height; - } - - rect.setOriginAndSize(rect.mLeft, rect.mBottom, rect.getWidth(), newHeight); - reshape(rect.getWidth(), rect.getHeight()); - setRect(rect); - - } } -void LLFloaterCamera::updateCameraPresetButtons() +void LLFloaterCamera::updateItemsSelection() { ECameraPreset preset = (ECameraPreset) gSavedSettings.getU32("CameraPreset"); - - childSetValue("rear_view", preset == CAMERA_PRESET_REAR_VIEW); - childSetValue("group_view", preset == CAMERA_PRESET_GROUP_VIEW); - childSetValue("front_view", preset == CAMERA_PRESET_FRONT_VIEW); - childSetValue("mouselook_view", gAgentCamera.cameraMouselook()); + LLSD argument; + argument["selected"] = preset == CAMERA_PRESET_REAR_VIEW; + getChild<LLPanelCameraItem>("rear_view")->setValue(argument); + argument["selected"] = preset == CAMERA_PRESET_GROUP_VIEW; + getChild<LLPanelCameraItem>("group_view")->setValue(argument); + argument["selected"] = preset == CAMERA_PRESET_FRONT_VIEW; + getChild<LLPanelCameraItem>("front_view")->setValue(argument); + argument["selected"] = gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK; + getChild<LLPanelCameraItem>("mouselook_view")->setValue(argument); + argument["selected"] = mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA; + getChild<LLPanelCameraItem>("object_view")->setValue(argument); } -void LLFloaterCamera::onClickCameraPresets(const LLSD& param) +void LLFloaterCamera::onClickCameraItem(const LLSD& param) { std::string name = param.asString(); + if ("mouselook_view" == name) + { + gAgentCamera.changeCameraToMouselook(); + } + else if ("object_view" == name) + { + LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); + if (camera_floater) + camera_floater->switchMode(CAMERA_CTRL_MODE_FREE_CAMERA); + } + else + { + switchToPreset(name); + } + + LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); + if (camera_floater) + { + camera_floater->updateItemsSelection(); + camera_floater->fromFreeToPresets(); + } +} + +/*static*/ +void LLFloaterCamera::switchToPreset(const std::string& name) +{ + sFreeCamera = false; + clear_camera_tool(); if ("rear_view" == name) { gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW); @@ -440,12 +539,12 @@ void LLFloaterCamera::onClickCameraPresets(const LLSD& param) { gAgentCamera.switchCameraPreset(CAMERA_PRESET_FRONT_VIEW); } - else if ("mouselook_view" == name) +} + +void LLFloaterCamera::fromFreeToPresets() +{ + if (!sFreeCamera && mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && mPrevMode == CAMERA_CTRL_MODE_PRESETS) { - gAgentCamera.changeCameraToMouselook(); + switchMode(CAMERA_CTRL_MODE_PRESETS); } - - LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); - if (camera_floater) - camera_floater->updateCameraPresetButtons(); } diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h index b268839165..8fa7a53996 100644 --- a/indra/newview/llfloatercamera.h +++ b/indra/newview/llfloatercamera.h @@ -34,6 +34,9 @@ #define LLFLOATERCAMERA_H #include "lltransientdockablefloater.h" +#include "lliconctrl.h" +#include "lltextbox.h" +#include "llflatlistview.h" class LLJoystickCameraRotate; class LLJoystickCameraZoom; @@ -43,10 +46,10 @@ class LLPanelCameraZoom; enum ECameraControlMode { - CAMERA_CTRL_MODE_ORBIT, + CAMERA_CTRL_MODE_MODES, CAMERA_CTRL_MODE_PAN, CAMERA_CTRL_MODE_FREE_CAMERA, - CAMERA_CTRL_MODE_AVATAR_VIEW + CAMERA_CTRL_MODE_PRESETS }; class LLFloaterCamera @@ -58,8 +61,8 @@ public: /* whether in free camera mode */ static bool inFreeCameraMode(); - /* callback for camera presets changing */ - static void onClickCameraPresets(const LLSD& param); + /* callback for camera items selection changing */ + static void onClickCameraItem(const LLSD& param); static void onLeavingMouseLook(); @@ -68,7 +71,14 @@ public: /* determines actual mode and updates ui */ void update(); - + + /*switch to one of the camera presets (front, rear, side)*/ + static void switchToPreset(const std::string& name); + + /* move to CAMERA_CTRL_MODE_PRESETS from CAMERA_CTRL_MODE_FREE_CAMERA if we are on presets panel and + are not in free camera mode*/ + void fromFreeToPresets(); + virtual void onOpen(const LLSD& key); virtual void onClose(bool app_quitting); @@ -88,9 +98,6 @@ private: ECameraControlMode determineMode(); - /* whether in avatar view (first person) mode */ - bool inAvatarViewMode(); - /* resets to the previous mode */ void toPrevMode(); @@ -106,18 +113,59 @@ private: /* updates the state (UI) according to the current mode */ void updateState(); - /* update camera preset buttons toggle state according to the currently selected preset */ - void updateCameraPresetButtons(); + /* update camera modes items selection and camera preset items selection according to the currently selected preset */ + void updateItemsSelection(); void onClickBtn(ECameraControlMode mode); void assignButton2Mode(ECameraControlMode mode, const std::string& button_name); + // fills flatlist with items from given panel + void fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel); + // set to true when free camera mode is selected in modes list + // remains true until preset camera mode is chosen, or pan button is clicked, or escape pressed + static bool sFreeCamera; BOOL mClosed; ECameraControlMode mPrevMode; ECameraControlMode mCurrMode; std::map<ECameraControlMode, LLButton*> mMode2Button; +}; +/** + * Class used to represent widgets from panel_camera_item.xml- + * panels that contain pictures and text. Pictures are different + * for selected and unselected state (this state is nor stored- icons + * are changed in setValue()). This class doesn't implement selection logic- + * it's items are used inside of flatlist. + */ +class LLPanelCameraItem + : public LLPanel +{ +public: + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + Optional<LLIconCtrl::Params> icon_over; + Optional<LLIconCtrl::Params> icon_selected; + Optional<LLIconCtrl::Params> picture; + Optional<LLIconCtrl::Params> selected_picture; + + Optional<LLTextBox::Params> text; + Optional<CommitCallbackParam> mousedown_callback; + Params(); + }; + /*virtual*/ BOOL postBuild(); + /** setting on/off background icon to indicate selected state */ + /*virtual*/ void setValue(const LLSD& value); + // sends commit signal + void onAnyMouseClick(); +protected: + friend class LLUICtrlFactory; + LLPanelCameraItem(const Params&); + LLIconCtrl* mIconOver; + LLIconCtrl* mIconSelected; + LLIconCtrl* mPicture; + LLIconCtrl* mPictureSelected; + LLTextBox* mText; }; #endif diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png Binary files differindex 3cfe2e850e..00158a7bc2 100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png Binary files differindex bb5d85e410..3748f5e190 100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Back_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png Binary files differindex 9876aa456c..c49b8f9a27 100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png Binary files differindex f481fed88c..bc8c4db04d 100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Front_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png Binary files differindex d58b4ff990..b919a0a152 100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png Binary files differindex 6e73898992..de9da359a0 100644 --- a/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png +++ b/indra/newview/skins/default/textures/bottomtray/Cam_Preset_Side_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png Binary files differnew file mode 100644 index 0000000000..8d32cad95f --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png Binary files differnew file mode 100644 index 0000000000..4c98e35868 --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/Mouselook_View_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png b/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png Binary files differnew file mode 100644 index 0000000000..e9dea7e17e --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/Object_View_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Object_View_On.png b/indra/newview/skins/default/textures/bottomtray/Object_View_On.png Binary files differnew file mode 100644 index 0000000000..7a348ba22e --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/Object_View_On.png diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png Binary files differnew file mode 100644 index 0000000000..20fa40e127 --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png Binary files differnew file mode 100644 index 0000000000..53efa3a9a9 --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png Binary files differnew file mode 100644 index 0000000000..f1420e0002 --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png Binary files differnew file mode 100644 index 0000000000..89a6269edc --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 91890009f4..57f23c7e76 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -278,6 +278,9 @@ with the same filename but different name <texture name="menu_separator" file_name="navbar/FileMenu_Divider.png" scale.left="4" scale.top="166" scale.right="0" scale.bottom="0" /> + <texture name="MouseLook_View_Off" file_name="bottomtray/MouseLook_view_off.png" preload="false" /> + <texture name="MouseLook_View_On" file_name="bottomtray/MouseLook_view_on.png" preload="false" /> + <texture name="Move_Fly_Off" file_name="bottomtray/Move_Fly_Off.png" preload="false" /> <texture name="Move_Run_Off" file_name="bottomtray/Move_Run_Off.png" preload="false" /> <texture name="Move_Walk_Off" file_name="bottomtray/Move_Walk_Off.png" preload="false" /> @@ -338,10 +341,14 @@ with the same filename but different name <texture name="Object_Tube" file_name="build/Object_Tube.png" preload="false" /> <texture name="Object_Tube_Selected" file_name="build/Object_Tube_Selected.png" preload="false" /> + <texture name="Object_View_Off" file_name="bottomtray/Object_View_Off.png" preload="false" /> + <texture name="Object_View_On" file_name="bottomtray/Object_View_On.png" preload="false" /> + <texture name="OptionsMenu_Disabled" file_name="icons/OptionsMenu_Disabled.png" preload="false" /> <texture name="OptionsMenu_Off" file_name="icons/OptionsMenu_Off.png" preload="false" /> <texture name="OptionsMenu_Press" file_name="icons/OptionsMenu_Press.png" preload="false" /> + <texture name="PanOrbit_Off" file_name="bottomtray/PanOrbit_Off.png" preload="false" /> <texture name="Parcel_Exp_Color" file_name="icons/Parcel_Exp_Color.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index 999cb9ed97..75b0457c90 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -1,267 +1,282 @@ -<?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="152" - layout="topleft" - name="camera_floater" - help_topic="camera_floater" - save_rect="true" - save_visibility="true" - save_dock_state="true" - single_instance="true" - width="150"> - <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="orbit_mode_title"> - Orbit - </floater.string> - <floater.string - name="pan_mode_title"> - Pan - </floater.string> - <floater.string - name="avatar_view_mode_title"> - Presets - </floater.string> - <floater.string - name="free_mode_title"> - View Object - </floater.string> - <panel - border="false" - height="110" - layout="topleft" - left="2" - top="0" - mouse_opaque="false" - name="controls" - width="148"> - <joystick_track - follows="top|left" - height="78" - image_selected="Cam_Tracking_In" - image_unselected="Cam_Tracking_Out" - layout="topleft" - left="45" - name="cam_track_stick" - quadrant="left" - scale_image="false" - sound_flags="3" - tool_tip="Move camera up and down, left and right" - top="22" - visible="false" - width="78" /> - <!--TODO: replace + - images --> - <panel - border="false" - class="camera_zoom_panel" - height="94" - layout="topleft" - left="7" - mouse_opaque="false" - name="zoom" - top="22" - width="18"> - <button - follows="top|left" - height="18" - image_disabled="AddItem_Disabled" - image_selected="AddItem_Press" - image_unselected="AddItem_Off" - layout="topleft" - name="zoom_plus_btn" - width="18"> - <commit_callback - function="Zoom.plus" /> - <mouse_held_callback - function="Zoom.plus" /> - </button> - <slider_bar - height="48" - 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> - </panel> - <joystick_rotate - follows="top|left" - height="78" - image_selected="Cam_Rotate_In" - image_unselected="Cam_Rotate_Out" - layout="topleft" - left="45" - mouse_opaque="false" - name="cam_rotate_stick" - quadrant="left" - scale_image="false" - sound_flags="3" - visible="true" - tool_tip="Orbit camera around focus" - top="22" - width="78" /> - <panel - height="78" - layout="topleft" - left="36" - name="camera_presets" - top="20" - visible="false" - width="78"> - <button - height="40" - image_selected="Cam_Preset_Back_On" - image_unselected="Cam_Preset_Back_Off" - is_toggle="true" - layout="topleft" - left="0" - name="rear_view" - tool_tip="Rear View" - top="2" - width="40"> - <click_callback - function="CameraPresets.ChangeView" - parameter="rear_view" /> - </button> - <button - height="40" - image_selected="Cam_Preset_Side_On" - image_unselected="Cam_Preset_Side_Off" - is_toggle="true" - layout="topleft" - left_pad="5" - name="group_view" - tool_tip="Group View" - top="2" - width="40"> - <click_callback - function="CameraPresets.ChangeView" - parameter="group_view" /> - </button> - <button - height="40" - image_selected="Cam_Preset_Front_On" - image_unselected="Cam_Preset_Front_Off" - is_toggle="true" - layout="topleft" - left="0" - name="front_view" - tool_tip="Front View" - top_pad="5" - width="40"> - <click_callback - function="CameraPresets.ChangeView" - parameter="front_view" /> - </button> - <button - height="40" - image_selected="Cam_Preset_Eye_Off" - image_unselected="Cam_Preset_Eye_Off" - is_toggle="true" - layout="topleft" - left_pad="5" - name="mouselook_view" - tool_tip="Mouselook View" - width="40"> - <click_callback - function="CameraPresets.ChangeView" - parameter="mouselook_view" /> - </button> - </panel> - </panel> - <panel - border="false" - height="42" - layout="topleft" - left="2" - top_pad="0" - name="buttons" - width="148"> - <button - height="23" - label="" - layout="topleft" - left="23" - is_toggle="true" - image_overlay="Cam_Orbit_Off" - image_selected="PushButton_Selected_Press" - name="orbit_btn" - tab_stop="false" - tool_tip="Orbit camera" - width="25"> - </button> - <button - height="23" - label="" - layout="topleft" - left_pad="0" - is_toggle="true" - image_overlay="Cam_Pan_Off" - image_selected="PushButton_Selected_Press" - name="pan_btn" - tab_stop="false" - tool_tip="Pan camera" - width="25"> - </button> - <button - height="23" - label="" - layout="topleft" - left_pad="0" - image_overlay="Cam_Avatar_Off" - image_selected="PushButton_Selected_Press" - name="avatarview_btn" - tab_stop="false" - tool_tip="Presets" - width="25"> - </button> - <button - height="23" - label="" - layout="topleft" - left_pad="0" - is_toggle="true" - image_overlay="Cam_FreeCam_Off" - image_selected="PushButton_Selected_Press" - name="freecamera_btn" - tab_stop="false" - tool_tip="View object" - width="25"> - </button> - </panel> -</floater> +<?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"
+ help_topic="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>
+ 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>
+ 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>
+ 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>
+ 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>
+ 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" />
+ <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"/>
+ </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="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">
+ </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>
+ <button
+ height="23"
+ label=""
+ layout="topleft"
+ left_pad="1"
+ image_overlay="Cam_FreeCam_Off"
+ image_selected="PushButton_Selected_Press"
+ name="avatarview_btn"
+ tab_stop="false"
+ tool_tip="Camera modes"
+ width="25">
+ </button>
+ </panel>
+</floater>
|