summaryrefslogtreecommitdiff
path: root/indra/newview/llfloatertools.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloatertools.cpp')
-rw-r--r--indra/newview/llfloatertools.cpp529
1 files changed, 262 insertions, 267 deletions
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index a33b49563c..4bcf470317 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -45,6 +45,7 @@
#include "lldraghandle.h"
#include "llfloaterbuildoptions.h"
#include "llfloateropenobject.h"
+#include "llfloaterreg.h"
#include "llfocusmgr.h"
#include "llmenugl.h"
#include "llpanelcontents.h"
@@ -54,6 +55,7 @@
#include "llpanelobject.h"
#include "llpanelvolume.h"
#include "llpanelpermissions.h"
+#include "llradiogroup.h"
#include "llresmgr.h"
#include "llselectmgr.h"
#include "llslider.h"
@@ -95,25 +97,21 @@ const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] =
};
// Local prototypes
-void commit_select_tool(LLUICtrl *ctrl, void *data);
void commit_select_component(LLUICtrl *ctrl, void *data);
void click_show_more(void*);
void click_popup_info(void*);
void click_popup_done(void*);
void click_popup_minimize(void*);
-void click_popup_grab_drag(LLUICtrl *, void*);
-void click_popup_grab_lift(LLUICtrl *, void*);
-void click_popup_grab_spin(LLUICtrl *, void*);
void click_popup_rotate_left(void*);
void click_popup_rotate_reset(void*);
void click_popup_rotate_right(void*);
-void click_popup_dozer_mode(LLUICtrl *, void *user);
void commit_slider_dozer_size(LLUICtrl *, void*);
void commit_slider_dozer_force(LLUICtrl *, void*);
void click_apply_to_selection(void*);
-void commit_radio_zoom(LLUICtrl *, void*);
-void commit_radio_orbit(LLUICtrl *, void*);
-void commit_radio_pan(LLUICtrl *, void*);
+void commit_radio_group_focus(LLUICtrl* ctrl, void* data);
+void commit_radio_group_move(LLUICtrl* ctrl, void* data);
+void commit_radio_group_edit(LLUICtrl* ctrl, void* data);
+void commit_radio_group_land(LLUICtrl* ctrl, void* data);
void commit_grid_mode(LLUICtrl *, void*);
void commit_slider_zoom(LLUICtrl *, void*);
@@ -122,14 +120,14 @@ void commit_slider_zoom(LLUICtrl *, void*);
void* LLFloaterTools::createPanelPermissions(void* data)
{
LLFloaterTools* floater = (LLFloaterTools*)data;
- floater->mPanelPermissions = new LLPanelPermissions("General");
+ floater->mPanelPermissions = new LLPanelPermissions();
return floater->mPanelPermissions;
}
//static
void* LLFloaterTools::createPanelObject(void* data)
{
LLFloaterTools* floater = (LLFloaterTools*)data;
- floater->mPanelObject = new LLPanelObject("Object");
+ floater->mPanelObject = new LLPanelObject();
return floater->mPanelObject;
}
@@ -137,7 +135,7 @@ void* LLFloaterTools::createPanelObject(void* data)
void* LLFloaterTools::createPanelVolume(void* data)
{
LLFloaterTools* floater = (LLFloaterTools*)data;
- floater->mPanelVolume = new LLPanelVolume("Features");
+ floater->mPanelVolume = new LLPanelVolume();
return floater->mPanelVolume;
}
@@ -145,7 +143,7 @@ void* LLFloaterTools::createPanelVolume(void* data)
void* LLFloaterTools::createPanelFace(void* data)
{
LLFloaterTools* floater = (LLFloaterTools*)data;
- floater->mPanelFace = new LLPanelFace("Texture");
+ floater->mPanelFace = new LLPanelFace();
return floater->mPanelFace;
}
@@ -153,26 +151,51 @@ void* LLFloaterTools::createPanelFace(void* data)
void* LLFloaterTools::createPanelContents(void* data)
{
LLFloaterTools* floater = (LLFloaterTools*)data;
- floater->mPanelContents = new LLPanelContents("Contents");
+ floater->mPanelContents = new LLPanelContents();
return floater->mPanelContents;
}
//static
-void* LLFloaterTools::createPanelContentsInventory(void* data)
-{
- LLFloaterTools* floater = (LLFloaterTools*)data;
- floater->mPanelContents->mPanelInventory = new LLPanelInventory(std::string("ContentsInventory"), LLRect());
- return floater->mPanelContents->mPanelInventory;
-}
-
-//static
void* LLFloaterTools::createPanelLandInfo(void* data)
{
LLFloaterTools* floater = (LLFloaterTools*)data;
- floater->mPanelLandInfo = new LLPanelLandInfo(std::string("land info panel"));
+ floater->mPanelLandInfo = new LLPanelLandInfo();
return floater->mPanelLandInfo;
}
+static const std::string toolNames[]={
+ "ToolCube",
+ "ToolPrism",
+ "ToolPyramid",
+ "ToolTetrahedron",
+ "ToolCylinder",
+ "ToolHemiCylinder",
+ "ToolCone",
+ "ToolHemiCone",
+ "ToolSphere",
+ "ToolHemiSphere",
+ "ToolTorus",
+ "ToolTube",
+ "ToolRing",
+ "ToolTree",
+ "ToolGrass"};
+LLPCode toolData[]={
+ LL_PCODE_CUBE,
+ LL_PCODE_PRISM,
+ LL_PCODE_PYRAMID,
+ LL_PCODE_TETRAHEDRON,
+ LL_PCODE_CYLINDER,
+ LL_PCODE_CYLINDER_HEMI,
+ LL_PCODE_CONE,
+ LL_PCODE_CONE_HEMI,
+ LL_PCODE_SPHERE,
+ LL_PCODE_SPHERE_HEMI,
+ LL_PCODE_TORUS,
+ LLViewerObject::LL_VO_SQUARE_TORUS,
+ LLViewerObject::LL_VO_TRIANGLE_TORUS,
+ LL_PCODE_LEGACY_TREE,
+ LL_PCODE_LEGACY_GRASS};
+
BOOL LLFloaterTools::postBuild()
{
@@ -200,27 +223,15 @@ BOOL LLFloaterTools::postBuild()
childSetCommitCallback("slider zoom",commit_slider_zoom,this);
- mRadioZoom = getChild<LLCheckBoxCtrl>("radio zoom");
- childSetCommitCallback("radio zoom",commit_radio_zoom,this);
- mRadioOrbit = getChild<LLCheckBoxCtrl>("radio orbit");
- childSetCommitCallback("radio orbit",commit_radio_orbit,this);
- mRadioPan = getChild<LLCheckBoxCtrl>("radio pan");
- childSetCommitCallback("radio pan",commit_radio_pan,this);
-
- mRadioMove = getChild<LLCheckBoxCtrl>("radio move");
- childSetCommitCallback("radio move",click_popup_grab_drag,this);
- mRadioLift = getChild<LLCheckBoxCtrl>("radio lift");
- childSetCommitCallback("radio lift",click_popup_grab_lift,this);
- mRadioSpin = getChild<LLCheckBoxCtrl>("radio spin");
- childSetCommitCallback("radio spin",click_popup_grab_spin,NULL);
- mRadioPosition = getChild<LLCheckBoxCtrl>("radio position");
- childSetCommitCallback("radio position",commit_select_tool,LLToolCompTranslate::getInstance());
- mRadioRotate = getChild<LLCheckBoxCtrl>("radio rotate");
- childSetCommitCallback("radio rotate",commit_select_tool,LLToolCompRotate::getInstance());
- mRadioStretch = getChild<LLCheckBoxCtrl>("radio stretch");
- childSetCommitCallback("radio stretch",commit_select_tool,LLToolCompScale::getInstance());
- mRadioSelectFace = getChild<LLCheckBoxCtrl>("radio select face");
- childSetCommitCallback("radio select face",commit_select_tool,LLToolFace::getInstance());
+ mRadioGroupFocus = getChild<LLRadioGroup>("focus_radio_group");
+ childSetCommitCallback("focus_radio_group", commit_radio_group_focus, this);
+
+ mRadioGroupMove = getChild<LLRadioGroup>("move_radio_group");
+ childSetCommitCallback("move_radio_group", commit_radio_group_move, this);
+
+ mRadioGroupEdit = getChild<LLRadioGroup>("edit_radio_group");
+ childSetCommitCallback("edit_radio_group", commit_radio_group_edit, this);
+
mCheckSelectIndividual = getChild<LLCheckBoxCtrl>("checkbox edit linked parts");
childSetValue("checkbox edit linked parts",(BOOL)gSavedSettings.getBOOL("EditLinkedParts"));
childSetCommitCallback("checkbox edit linked parts",commit_select_component,this);
@@ -239,44 +250,12 @@ BOOL LLFloaterTools::postBuild()
// Create Buttons
//
- static const std::string toolNames[]={
- "ToolCube",
- "ToolPrism",
- "ToolPyramid",
- "ToolTetrahedron",
- "ToolCylinder",
- "ToolHemiCylinder",
- "ToolCone",
- "ToolHemiCone",
- "ToolSphere",
- "ToolHemiSphere",
- "ToolTorus",
- "ToolTube",
- "ToolRing",
- "ToolTree",
- "ToolGrass"};
- void* toolData[]={
- &LLToolPlacerPanel::sCube,
- &LLToolPlacerPanel::sPrism,
- &LLToolPlacerPanel::sPyramid,
- &LLToolPlacerPanel::sTetrahedron,
- &LLToolPlacerPanel::sCylinder,
- &LLToolPlacerPanel::sCylinderHemi,
- &LLToolPlacerPanel::sCone,
- &LLToolPlacerPanel::sConeHemi,
- &LLToolPlacerPanel::sSphere,
- &LLToolPlacerPanel::sSphereHemi,
- &LLToolPlacerPanel::sTorus,
- &LLToolPlacerPanel::sSquareTorus,
- &LLToolPlacerPanel::sTriangleTorus,
- &LLToolPlacerPanel::sTree,
- &LLToolPlacerPanel::sGrass};
for(size_t t=0; t<LL_ARRAY_SIZE(toolNames); ++t)
{
LLButton *found = getChild<LLButton>(toolNames[t]);
if(found)
{
- found->setClickedCallback(setObjectType,toolData[t]);
+ found->setClickedCallback(boost::bind(&LLFloaterTools::setObjectType, toolData[t]));
mButtons.push_back( found );
}else{
llwarns << "Tool button not found! DOA Pending." << llendl;
@@ -290,20 +269,10 @@ BOOL LLFloaterTools::postBuild()
childSetValue("checkbox copy centers",(BOOL)gSavedSettings.getBOOL("CreateToolCopyCenters"));
mCheckCopyRotates = getChild<LLCheckBoxCtrl>("checkbox copy rotates");
childSetValue("checkbox copy rotates",(BOOL)gSavedSettings.getBOOL("CreateToolCopyRotates"));
- mRadioSelectLand = getChild<LLCheckBoxCtrl>("radio select land");
- childSetCommitCallback("radio select land",commit_select_tool, LLToolSelectLand::getInstance());
- mRadioDozerFlatten = getChild<LLCheckBoxCtrl>("radio flatten");
- childSetCommitCallback("radio flatten",click_popup_dozer_mode, (void*)0);
- mRadioDozerRaise = getChild<LLCheckBoxCtrl>("radio raise");
- childSetCommitCallback("radio raise",click_popup_dozer_mode, (void*)1);
- mRadioDozerLower = getChild<LLCheckBoxCtrl>("radio lower");
- childSetCommitCallback("radio lower",click_popup_dozer_mode, (void*)2);
- mRadioDozerSmooth = getChild<LLCheckBoxCtrl>("radio smooth");
- childSetCommitCallback("radio smooth",click_popup_dozer_mode, (void*)3);
- mRadioDozerNoise = getChild<LLCheckBoxCtrl>("radio noise");
- childSetCommitCallback("radio noise",click_popup_dozer_mode, (void*)4);
- mRadioDozerRevert = getChild<LLCheckBoxCtrl>("radio revert");
- childSetCommitCallback("radio revert",click_popup_dozer_mode, (void*)5);
+
+ mRadioGroupLand = getChild<LLRadioGroup>("land_radio_group");
+ childSetCommitCallback("land_radio_group", commit_radio_group_land, this);
+
mBtnApplyToSelection = getChild<LLButton>("button apply to selection");
childSetAction("button apply to selection",click_apply_to_selection, (void*)0);
@@ -338,8 +307,8 @@ BOOL LLFloaterTools::postBuild()
// Create the popupview with a dummy center. It will be moved into place
// during LLViewerWindow's per-frame hover processing.
-LLFloaterTools::LLFloaterTools()
-: LLFloater(std::string("toolbox floater")),
+LLFloaterTools::LLFloaterTools(const LLSD& key)
+: LLFloater(key),
mBtnFocus(NULL),
mBtnMove(NULL),
mBtnEdit(NULL),
@@ -347,18 +316,10 @@ LLFloaterTools::LLFloaterTools()
mBtnLand(NULL),
mTextStatus(NULL),
- mRadioOrbit(NULL),
- mRadioZoom(NULL),
- mRadioPan(NULL),
-
- mRadioMove(NULL),
- mRadioLift(NULL),
- mRadioSpin(NULL),
+ mRadioGroupFocus(NULL),
+ mRadioGroupMove(NULL),
+ mRadioGroupEdit(NULL),
- mRadioPosition(NULL),
- mRadioRotate(NULL),
- mRadioStretch(NULL),
- mRadioSelectFace(NULL),
mCheckSelectIndividual(NULL),
mCheckSnapToGrid(NULL),
@@ -380,13 +341,7 @@ LLFloaterTools::LLFloaterTools()
mCheckCopySelection(NULL),
mCheckCopyCenters(NULL),
mCheckCopyRotates(NULL),
- mRadioSelectLand(NULL),
- mRadioDozerFlatten(NULL),
- mRadioDozerRaise(NULL),
- mRadioDozerLower(NULL),
- mRadioDozerSmooth(NULL),
- mRadioDozerNoise(NULL),
- mRadioDozerRevert(NULL),
+ mRadioGroupLand(NULL),
mSliderDozerSize(NULL),
mSliderDozerForce(NULL),
mBtnApplyToSelection(NULL),
@@ -402,22 +357,23 @@ LLFloaterTools::LLFloaterTools()
mTabLand(NULL),
mDirty(TRUE)
{
+ gFloaterTools = this;
+
setAutoFocus(FALSE);
- LLCallbackMap::map_t factory_map;
- factory_map["General"] = LLCallbackMap(createPanelPermissions, this);//LLPanelPermissions
- factory_map["Object"] = LLCallbackMap(createPanelObject, this);//LLPanelObject
- factory_map["Features"] = LLCallbackMap(createPanelVolume, this);//LLPanelVolume
- factory_map["Texture"] = LLCallbackMap(createPanelFace, this);//LLPanelFace
- factory_map["Contents"] = LLCallbackMap(createPanelContents, this);//LLPanelContents
- factory_map["ContentsInventory"] = LLCallbackMap(createPanelContentsInventory, this);//LLPanelContents
- factory_map["land info panel"] = LLCallbackMap(createPanelLandInfo, this);//LLPanelLandInfo
-
- LLUICtrlFactory::getInstance()->buildFloater(this,"floater_tools.xml",&factory_map,FALSE);
+ mFactoryMap["General"] = LLCallbackMap(createPanelPermissions, this);//LLPanelPermissions
+ mFactoryMap["Object"] = LLCallbackMap(createPanelObject, this);//LLPanelObject
+ mFactoryMap["Features"] = LLCallbackMap(createPanelVolume, this);//LLPanelVolume
+ mFactoryMap["Texture"] = LLCallbackMap(createPanelFace, this);//LLPanelFace
+ mFactoryMap["Contents"] = LLCallbackMap(createPanelContents, this);//LLPanelContents
+ mFactoryMap["land info panel"] = LLCallbackMap(createPanelLandInfo, this);//LLPanelLandInfo
+
+ //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_tools.xml",FALSE);
}
LLFloaterTools::~LLFloaterTools()
{
// children automatically deleted
+ gFloaterTools = NULL;
}
void LLFloaterTools::setStatusText(const std::string& text)
@@ -525,26 +481,31 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
mBtnFocus ->setToggleState( focus_visible );
- mRadioZoom ->setVisible( focus_visible );
- mRadioOrbit ->setVisible( focus_visible );
- mRadioPan ->setVisible( focus_visible );
+ mRadioGroupFocus->setVisible( focus_visible );
childSetVisible("slider zoom", focus_visible);
childSetEnabled("slider zoom", gCameraBtnZoom);
- mRadioZoom ->set( !gCameraBtnOrbit &&
- !gCameraBtnPan &&
- !(mask == MASK_ORBIT) &&
- !(mask == (MASK_ORBIT | MASK_ALT)) &&
- !(mask == MASK_PAN) &&
- !(mask == (MASK_PAN | MASK_ALT)) );
-
- mRadioOrbit ->set( gCameraBtnOrbit ||
- (mask == MASK_ORBIT) ||
- (mask == (MASK_ORBIT | MASK_ALT)) );
-
- mRadioPan ->set( gCameraBtnPan ||
- (mask == MASK_PAN) ||
- (mask == (MASK_PAN | MASK_ALT)) );
+ if (!gCameraBtnOrbit &&
+ !gCameraBtnPan &&
+ !(mask == MASK_ORBIT) &&
+ !(mask == (MASK_ORBIT | MASK_ALT)) &&
+ !(mask == MASK_PAN) &&
+ !(mask == (MASK_PAN | MASK_ALT)) )
+ {
+ mRadioGroupFocus->setValue("radio zoom");
+ }
+ else if ( gCameraBtnOrbit ||
+ (mask == MASK_ORBIT) ||
+ (mask == (MASK_ORBIT | MASK_ALT)) )
+ {
+ mRadioGroupFocus->setValue("radio orbit");
+ }
+ else if ( gCameraBtnPan ||
+ (mask == MASK_PAN) ||
+ (mask == (MASK_PAN | MASK_ALT)) )
+ {
+ mRadioGroupFocus->setValue("radio pan");
+ }
// multiply by correction factor because volume sliders go [0, 0.5]
childSetValue( "slider zoom", gAgent.getCameraZoomFraction() * 0.5f);
@@ -555,27 +516,23 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
if (mBtnMove) mBtnMove ->setToggleState( move_visible );
// HACK - highlight buttons for next click
- if (mRadioMove)
+ mRadioGroupMove->setVisible(move_visible);
+ if (!gGrabBtnSpin &&
+ !gGrabBtnVertical &&
+ !(mask == MASK_VERTICAL) &&
+ !(mask == MASK_SPIN) )
{
- mRadioMove ->setVisible( move_visible );
- mRadioMove ->set( !gGrabBtnSpin &&
- !gGrabBtnVertical &&
- !(mask == MASK_VERTICAL) &&
- !(mask == MASK_SPIN) );
+ mRadioGroupMove->setValue("radio move");
}
-
- if (mRadioLift)
+ else if (gGrabBtnVertical ||
+ (mask == MASK_VERTICAL) )
{
- mRadioLift ->setVisible( move_visible );
- mRadioLift ->set( gGrabBtnVertical ||
- (mask == MASK_VERTICAL) );
+ mRadioGroupMove->setValue("radio lift");
}
-
- if (mRadioSpin)
+ else if (gGrabBtnSpin ||
+ (mask == MASK_SPIN) )
{
- mRadioSpin ->setVisible( move_visible );
- mRadioSpin ->set( gGrabBtnSpin ||
- (mask == MASK_SPIN) );
+ mRadioGroupMove->setValue("radio spin");
}
// Edit buttons
@@ -587,15 +544,7 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
tool == LLToolPipette::getInstance();
mBtnEdit ->setToggleState( edit_visible );
-
- mRadioPosition ->setVisible( edit_visible );
- mRadioRotate ->setVisible( edit_visible );
- mRadioStretch ->setVisible( edit_visible );
- if (mRadioSelectFace)
- {
- mRadioSelectFace->setVisible( edit_visible );
- mRadioSelectFace->set( tool == LLToolFace::getInstance() );
- }
+ mRadioGroupEdit->setVisible( edit_visible );
if (mCheckSelectIndividual)
{
@@ -603,9 +552,22 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
//mCheckSelectIndividual->set(gSavedSettings.getBOOL("EditLinkedParts"));
}
- mRadioPosition ->set( tool == LLToolCompTranslate::getInstance() );
- mRadioRotate ->set( tool == LLToolCompRotate::getInstance() );
- mRadioStretch ->set( tool == LLToolCompScale::getInstance() );
+ if ( tool == LLToolCompTranslate::getInstance() )
+ {
+ mRadioGroupEdit->setValue("radio position");
+ }
+ else if ( tool == LLToolCompRotate::getInstance() )
+ {
+ mRadioGroupEdit->setValue("radio rotate");
+ }
+ else if ( tool == LLToolCompScale::getInstance() )
+ {
+ mRadioGroupEdit->setValue("radio stretch");
+ }
+ else if ( tool == LLToolFace::getInstance() )
+ {
+ mRadioGroupEdit->setValue("radio select face");
+ }
if (mComboGridMode)
{
@@ -662,15 +624,13 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
else
{
// Highlight the correct placer button
- for( std::vector<LLButton*>::size_type i = 0; i < mButtons.size(); i++ )
+ for( S32 t = 0; t < (S32)mButtons.size(); t++ )
{
LLPCode pcode = LLToolPlacer::getObjectType();
- void *userdata = mButtons[i]->getCallbackUserData();
- LLPCode *cur = (LLPCode*) userdata;
-
- BOOL state = (pcode == *cur);
- mButtons[i]->setToggleState( state );
- mButtons[i]->setVisible( create_visible );
+ LLPCode button_pcode = toolData[t];
+ BOOL state = (pcode == button_pcode);
+ mButtons[t]->setToggleState( state );
+ mButtons[t]->setVisible( create_visible );
}
}
@@ -687,44 +647,39 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
if (mBtnLand) mBtnLand ->setToggleState( land_visible );
- // mRadioEditLand ->set( tool == LLToolBrushLand::getInstance() );
- if (mRadioSelectLand) mRadioSelectLand->set( tool == LLToolSelectLand::getInstance() );
-
- // mRadioEditLand ->setVisible( land_visible );
- if (mRadioSelectLand) mRadioSelectLand->setVisible( land_visible );
-
- S32 dozer_mode = gSavedSettings.getS32("RadioLandBrushAction");
-
- if (mRadioDozerFlatten)
+ mRadioGroupLand->setVisible( land_visible );
+ if ( tool == LLToolSelectLand::getInstance() )
{
- mRadioDozerFlatten ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 0);
- mRadioDozerFlatten ->setVisible( land_visible );
+ mRadioGroupLand->setValue("radio select land");
}
- if (mRadioDozerRaise)
+ else if ( tool == LLToolBrushLand::getInstance() )
{
- mRadioDozerRaise ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 1);
- mRadioDozerRaise ->setVisible( land_visible );
- }
- if (mRadioDozerLower)
- {
- mRadioDozerLower ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 2);
- mRadioDozerLower ->setVisible( land_visible );
- }
- if (mRadioDozerSmooth)
- {
- mRadioDozerSmooth ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 3);
- mRadioDozerSmooth ->setVisible( land_visible );
- }
- if (mRadioDozerNoise)
- {
- mRadioDozerNoise ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 4);
- mRadioDozerNoise ->setVisible( land_visible );
- }
- if (mRadioDozerRevert)
- {
- mRadioDozerRevert ->set( tool == LLToolBrushLand::getInstance() && dozer_mode == 5);
- mRadioDozerRevert ->setVisible( land_visible );
+ S32 dozer_mode = gSavedSettings.getS32("RadioLandBrushAction");
+ switch(dozer_mode)
+ {
+ case 0:
+ mRadioGroupLand->setValue("radio flatten");
+ break;
+ case 1:
+ mRadioGroupLand->setValue("radio raise");
+ break;
+ case 2:
+ mRadioGroupLand->setValue("radio lower");
+ break;
+ case 3:
+ mRadioGroupLand->setValue("radio smooth");
+ break;
+ case 4:
+ mRadioGroupLand->setValue("radio noise");
+ break;
+ case 5:
+ mRadioGroupLand->setValue("radio revert");
+ break;
+ default:
+ break;
+ }
}
+
if (mBtnApplyToSelection)
{
mBtnApplyToSelection->setVisible( land_visible );
@@ -757,13 +712,18 @@ BOOL LLFloaterTools::canClose()
}
// virtual
-void LLFloaterTools::onOpen()
+void LLFloaterTools::onOpen(const LLSD& key)
{
mParcelSelection = LLViewerParcelMgr::getInstance()->getFloatingParcelSelection();
mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
- // gMenuBarView->setItemVisible(std::string("Tools"), TRUE);
- // gMenuBarView->arrange();
+ std::string panel = key.asString();
+ if (!panel.empty())
+ {
+ mTab->selectTabByName(panel);
+ }
+
+ gMenuBarView->setItemVisible("BuildTools", TRUE);
}
// virtual
@@ -796,19 +756,11 @@ void LLFloaterTools::onClose(bool app_quitting)
// so manually reset tool to default (pie menu tool)
LLToolMgr::getInstance()->getCurrentToolset()->selectFirstTool();
- // gMenuBarView->setItemVisible(std::string("Tools"), FALSE);
- // gMenuBarView->arrange();
-}
-
-void LLFloaterTools::showPanel(EInfoPanel panel)
-{
- llassert(panel >= 0 && panel < PANEL_COUNT);
- mTab->selectTabByName(PANEL_NAMES[panel]);
+ gMenuBarView->setItemVisible("BuildTools", FALSE);
}
void click_popup_info(void*)
{
-// gBuildView->setPropertiesPanelOpen(TRUE);
}
void click_popup_done(void*)
@@ -816,43 +768,49 @@ void click_popup_done(void*)
handle_reset_view();
}
-void click_popup_grab_drag(LLUICtrl*, void*)
+void commit_radio_group_move(LLUICtrl* ctrl, void* data)
{
- gGrabBtnVertical = FALSE;
- gGrabBtnSpin = FALSE;
-}
-
-void click_popup_grab_lift(LLUICtrl*, void*)
-{
- gGrabBtnVertical = TRUE;
- gGrabBtnSpin = FALSE;
-}
-
-void click_popup_grab_spin(LLUICtrl*, void*)
-{
- gGrabBtnVertical = FALSE;
- gGrabBtnSpin = TRUE;
-}
-
-void commit_radio_zoom(LLUICtrl *, void*)
-{
- gCameraBtnZoom = TRUE;
- gCameraBtnOrbit = FALSE;
- gCameraBtnPan = FALSE;
-}
-
-void commit_radio_orbit(LLUICtrl *, void*)
-{
- gCameraBtnZoom = FALSE;
- gCameraBtnOrbit = TRUE;
- gCameraBtnPan = FALSE;
+ LLRadioGroup* group = (LLRadioGroup*)ctrl;
+ std::string selected = group->getValue().asString();
+ if (selected == "radio move")
+ {
+ gGrabBtnVertical = FALSE;
+ gGrabBtnSpin = FALSE;
+ }
+ else if (selected == "radio lift")
+ {
+ gGrabBtnVertical = TRUE;
+ gGrabBtnSpin = FALSE;
+ }
+ else if (selected == "radio spin")
+ {
+ gGrabBtnVertical = FALSE;
+ gGrabBtnSpin = TRUE;
+ }
}
-void commit_radio_pan(LLUICtrl *, void*)
+void commit_radio_group_focus(LLUICtrl* ctrl, void* data)
{
- gCameraBtnZoom = FALSE;
- gCameraBtnOrbit = FALSE;
- gCameraBtnPan = TRUE;
+ LLRadioGroup* group = (LLRadioGroup*)ctrl;
+ std::string selected = group->getValue().asString();
+ if (selected == "radio zoom")
+ {
+ gCameraBtnZoom = TRUE;
+ gCameraBtnOrbit = FALSE;
+ gCameraBtnPan = FALSE;
+ }
+ else if (selected == "radio orbit")
+ {
+ gCameraBtnZoom = FALSE;
+ gCameraBtnOrbit = TRUE;
+ gCameraBtnPan = FALSE;
+ }
+ else if (selected == "radio pan")
+ {
+ gCameraBtnZoom = FALSE;
+ gCameraBtnOrbit = FALSE;
+ gCameraBtnPan = TRUE;
+ }
}
void commit_slider_zoom(LLUICtrl *ctrl, void*)
@@ -881,13 +839,6 @@ void click_popup_rotate_right(void*)
}
-void click_popup_dozer_mode(LLUICtrl *, void *user)
-{
- S32 mode = (S32)(intptr_t) user;
- gFloaterTools->setEditTool( LLToolBrushLand::getInstance() );
- gSavedSettings.setS32("RadioLandBrushAction", mode);
-}
-
void commit_slider_dozer_size(LLUICtrl *ctrl, void*)
{
F32 size = (F32)ctrl->getValue().asReal();
@@ -901,21 +852,64 @@ void commit_slider_dozer_force(LLUICtrl *ctrl, void*)
gSavedSettings.setF32("LandBrushForce", dozer_force);
}
-
-
-
void click_apply_to_selection(void* user)
{
LLToolBrushLand::getInstance()->modifyLandInSelectionGlobal();
}
-void commit_select_tool(LLUICtrl *ctrl, void *data)
+void commit_radio_group_edit(LLUICtrl *ctrl, void *data)
{
S32 show_owners = gSavedSettings.getBOOL("ShowParcelOwners");
- gFloaterTools->setEditTool(data);
+
+ LLRadioGroup* group = (LLRadioGroup*)ctrl;
+ std::string selected = group->getValue().asString();
+ if (selected == "radio position")
+ {
+ LLFloaterTools::setEditTool( LLToolCompTranslate::getInstance() );
+ }
+ else if (selected == "radio rotate")
+ {
+ LLFloaterTools::setEditTool( LLToolCompRotate::getInstance() );
+ }
+ else if (selected == "radio stretch")
+ {
+ LLFloaterTools::setEditTool( LLToolCompScale::getInstance() );
+ }
+ else if (selected == "radio select face")
+ {
+ LLFloaterTools::setEditTool( LLToolFace::getInstance() );
+ }
gSavedSettings.setBOOL("ShowParcelOwners", show_owners);
}
+void commit_radio_group_land(LLUICtrl* ctrl, void* data)
+{
+ LLRadioGroup* group = (LLRadioGroup*)ctrl;
+ std::string selected = group->getValue().asString();
+ if (selected == "radio select land")
+ {
+ LLFloaterTools::setEditTool( LLToolSelectLand::getInstance() );
+ }
+ else
+ {
+ LLFloaterTools::setEditTool( LLToolBrushLand::getInstance() );
+ S32 dozer_mode = gSavedSettings.getS32("RadioLandBrushAction");
+ if (selected == "radio flatten")
+ dozer_mode = 0;
+ else if (selected == "radio raise")
+ dozer_mode = 1;
+ else if (selected == "radio lower")
+ dozer_mode = 2;
+ else if (selected == "radio smooth")
+ dozer_mode = 3;
+ else if (selected == "radio noise")
+ dozer_mode = 4;
+ else if (selected == "radio revert")
+ dozer_mode = 5;
+ gSavedSettings.setS32("RadioLandBrushAction", dozer_mode);
+ }
+}
+
void commit_select_component(LLUICtrl *ctrl, void *data)
{
LLFloaterTools* floaterp = (LLFloaterTools*)data;
@@ -948,9 +942,8 @@ void commit_grid_mode(LLUICtrl *ctrl, void *data)
}
// static
-void LLFloaterTools::setObjectType( void* data )
+void LLFloaterTools::setObjectType( LLPCode pcode )
{
- LLPCode pcode = *(LLPCode*) data;
LLToolPlacer::setObjectType( pcode );
gSavedSettings.setBOOL("CreateToolCopySelection", FALSE);
gFocusMgr.setMouseCapture(NULL);
@@ -960,14 +953,16 @@ void LLFloaterTools::setObjectType( void* data )
void LLFloaterTools::onClickGridOptions(void* data)
{
//LLFloaterTools* floaterp = (LLFloaterTools*)data;
- LLFloaterBuildOptions::show(NULL);
+ LLFloaterReg::showInstance("build_options");
// RN: this makes grid options dependent on build tools window
//floaterp->addDependentFloater(LLFloaterBuildOptions::getInstance(), FALSE);
}
+// static
void LLFloaterTools::setEditTool(void* tool_pointer)
{
- select_tool(tool_pointer);
+ LLTool *tool = (LLTool *)tool_pointer;
+ LLToolMgr::getInstance()->getCurrentToolset()->selectTool( tool );
}
void LLFloaterTools::onFocusReceived()