Includes Chalice Yao's pause agent on attachment selection in LLSelectMgr::updateSelectionCenter() Includes some of Cinder Roxley's enhancements to the build floater for materials (flip buttons, sync materials, consistent control hiding) Includes Ansariel Hiller's fix for FIRE-8298 [BUG-869] [MAINT-1961], since this updates lltexturectrl.* to have related behaviors. Switches from using MIN_MANHATTAN_DIST for threshold in LLToolDragAndDrop to using the existing DragAndDropDistanceThreshold debug, like upstream. Translators: panel_tools_texture.xml should now be translated, floater_tools.xml should have the old panel removed. strings.xml now has "use_texture" string. notifications.xml Now has "LivePreviewUnavailable" alert. (don't forget to translate the ignoretext)
224 lines
5.9 KiB
C++
224 lines
5.9 KiB
C++
/**
|
|
* @file llfloatertools.h
|
|
* @brief The edit tools, including move, position, land, etc.
|
|
*
|
|
* $LicenseInfo:firstyear=2002&license=viewergpl$
|
|
*
|
|
* Copyright (c) 2002-2009, Linden Research, Inc.
|
|
*
|
|
* Second Life Viewer Source Code
|
|
* The source code in this file ("Source Code") is provided by Linden Lab
|
|
* to you under the terms of the GNU General Public License, version 2.0
|
|
* ("GPL"), unless you have obtained a separate licensing agreement
|
|
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
|
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
|
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
|
*
|
|
* There are special exceptions to the terms and conditions of the GPL as
|
|
* it is applied to this Source Code. View the full text of the exception
|
|
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
|
* online at
|
|
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
|
*
|
|
* By copying, modifying or distributing this software, you acknowledge
|
|
* that you have read and understood your obligations described above,
|
|
* and agree to abide by those obligations.
|
|
*
|
|
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
|
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
|
* COMPLETENESS OR PERFORMANCE.
|
|
* $/LicenseInfo$
|
|
*/
|
|
|
|
#ifndef LL_LLFLOATERTOOLS_H
|
|
#define LL_LLFLOATERTOOLS_H
|
|
|
|
#include "llfloater.h"
|
|
#include "llcoord.h"
|
|
#include "llparcelselection.h"
|
|
|
|
class LLButton;
|
|
class LLCheckBoxCtrl;
|
|
class LLComboBox;
|
|
class LLPanelPermissions;
|
|
class LLPanelObject;
|
|
class LLPanelVolume;
|
|
class LLPanelContents;
|
|
class LLPanelFace;
|
|
class LLPanelLandInfo;
|
|
class LLSlider;
|
|
class LLTabContainer;
|
|
class LLTextBox;
|
|
class LLMediaCtrl;
|
|
class LLTool;
|
|
class LLParcelSelection;
|
|
class LLObjectSelection;
|
|
|
|
typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle;
|
|
|
|
class LLFloaterTools
|
|
: public LLFloater
|
|
{
|
|
public:
|
|
virtual BOOL postBuild();
|
|
static void* createPanelPermissions(void* vdata);
|
|
static void* createPanelObject(void* vdata);
|
|
static void* createPanelVolume(void* vdata);
|
|
static void* createPanelFace(void* vdata);
|
|
static void* createPanelContents(void* vdata);
|
|
static void* createPanelContentsInventory(void* vdata);
|
|
static void* createPanelLandInfo(void* vdata);
|
|
|
|
LLFloaterTools();
|
|
virtual ~LLFloaterTools();
|
|
|
|
/*virtual*/ void onOpen();
|
|
/*virtual*/ BOOL canClose();
|
|
/*virtual*/ void onClose(bool app_quitting);
|
|
/*virtual*/ void draw();
|
|
/*virtual*/ void onFocusReceived();
|
|
|
|
// call this once per frame to handle visibility, rect location,
|
|
// button highlights, etc.
|
|
void updatePopup(LLCoordGL center, MASK mask);
|
|
|
|
// When the floater is going away, reset any options that need to be
|
|
// cleared.
|
|
void resetToolState();
|
|
|
|
enum EInfoPanel
|
|
{
|
|
PANEL_GENERAL=0,
|
|
PANEL_OBJECT,
|
|
PANEL_FEATURES,
|
|
PANEL_FACE,
|
|
PANEL_CONTENTS,
|
|
PANEL_COUNT
|
|
};
|
|
|
|
void dirty();
|
|
void showPanel(EInfoPanel panel);
|
|
|
|
void setStatusText(const std::string& text);
|
|
static void setEditTool(void* data);
|
|
void setTool(const LLSD& user_data);
|
|
void saveLastTool();
|
|
void onClickBtnDeleteMedia();
|
|
void onClickBtnAddMedia();
|
|
void onClickBtnEditMedia();
|
|
void clearMediaSettings();
|
|
void updateMediaTitle();
|
|
void navigateToTitleMedia( const std::string url );
|
|
bool selectedMediaEditable();
|
|
|
|
LLPanelFace* getPanelFace() { return mPanelFace; }
|
|
|
|
private:
|
|
void refresh();
|
|
void refreshMedia();
|
|
void getMediaState();
|
|
void updateMediaSettings();
|
|
static bool deleteMediaConfirm(const LLSD& notification, const LLSD& response);
|
|
static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);
|
|
static void setObjectType( LLPCode pcode );
|
|
void onClickGridOptions();
|
|
|
|
public:
|
|
LLButton *mBtnFocus;
|
|
LLButton *mBtnMove;
|
|
LLButton *mBtnEdit;
|
|
LLButton *mBtnCreate;
|
|
LLButton *mBtnLand;
|
|
|
|
LLTextBox *mTextStatus;
|
|
|
|
// Focus buttons
|
|
LLCheckBoxCtrl *mRadioOrbit;
|
|
LLCheckBoxCtrl *mRadioZoom;
|
|
LLCheckBoxCtrl *mRadioPan;
|
|
|
|
// Move buttons
|
|
LLCheckBoxCtrl *mRadioMove;
|
|
LLCheckBoxCtrl *mRadioLift;
|
|
LLCheckBoxCtrl *mRadioSpin;
|
|
|
|
// Edit buttons
|
|
LLCheckBoxCtrl *mRadioPosition;
|
|
LLCheckBoxCtrl *mRadioRotate;
|
|
LLCheckBoxCtrl *mRadioStretch;
|
|
LLCheckBoxCtrl *mRadioSelectFace;
|
|
LLCheckBoxCtrl *mRadioAlign;
|
|
|
|
LLCheckBoxCtrl *mCheckSelectIndividual;
|
|
|
|
LLCheckBoxCtrl* mCheckSnapToGrid;
|
|
LLButton* mBtnGridOptions;
|
|
LLTextBox* mTextGridMode;
|
|
LLComboBox* mComboGridMode;
|
|
LLCheckBoxCtrl* mCheckStretchUniform;
|
|
LLCheckBoxCtrl* mCheckStretchTexture;
|
|
LLCheckBoxCtrl* mCheckLimitDrag;
|
|
LLCheckBoxCtrl* mCheckShowHighlight;
|
|
LLCheckBoxCtrl* mCheckActualRoot;
|
|
|
|
|
|
LLButton *mBtnRotateLeft;
|
|
LLButton *mBtnRotateReset;
|
|
LLButton *mBtnRotateRight;
|
|
|
|
LLButton *mBtnDelete;
|
|
LLButton *mBtnDuplicate;
|
|
LLButton *mBtnDuplicateInPlace;
|
|
|
|
// Create buttons
|
|
LLComboBox *mComboTreesGrass;
|
|
LLCheckBoxCtrl *mCheckSticky;
|
|
LLCheckBoxCtrl *mCheckCopySelection;
|
|
LLCheckBoxCtrl *mCheckCopyCenters;
|
|
LLCheckBoxCtrl *mCheckCopyRotates;
|
|
|
|
// Land buttons
|
|
// LLCheckBoxCtrl *mRadioEditLand;
|
|
LLCheckBoxCtrl *mRadioSelectLand;
|
|
|
|
LLCheckBoxCtrl *mRadioDozerFlatten;
|
|
LLCheckBoxCtrl *mRadioDozerRaise;
|
|
LLCheckBoxCtrl *mRadioDozerLower;
|
|
LLCheckBoxCtrl *mRadioDozerSmooth;
|
|
LLCheckBoxCtrl *mRadioDozerNoise;
|
|
LLCheckBoxCtrl *mRadioDozerRevert;
|
|
LLSlider *mSliderDozerSize;
|
|
LLSlider *mSliderDozerForce;
|
|
|
|
LLButton *mBtnApplyToSelection;
|
|
|
|
std::vector<LLButton*> mButtons;//[ 15 ];
|
|
|
|
LLTabContainer *mTab;
|
|
LLPanelPermissions *mPanelPermissions;
|
|
LLPanelObject *mPanelObject;
|
|
LLPanelVolume *mPanelVolume;
|
|
LLPanelContents *mPanelContents;
|
|
LLPanelFace *mPanelFace;
|
|
LLPanelLandInfo *mPanelLandInfo;
|
|
|
|
LLParcelSelectionHandle mParcelSelection;
|
|
LLObjectSelectionHandle mObjectSelection;
|
|
|
|
LLMediaCtrl *mTitleMedia;
|
|
bool mNeedMediaTitle;
|
|
private:
|
|
BOOL mDirty;
|
|
|
|
std::map<std::string, std::string> mStatusText;
|
|
|
|
void updateTreeGrassCombo(bool visible);
|
|
static void onSelectTreesGrass(LLUICtrl*, void*);
|
|
protected:
|
|
LLSD mMediaSettings;
|
|
};
|
|
|
|
extern LLFloaterTools *gFloaterTools;
|
|
|
|
#endif
|