SL-13359 #2 UI changes for panel object
todo: new icons, separator and some repositioningmeow-7.2.2
parent
090bb3e6de
commit
f363646eb7
|
|
@ -118,8 +118,9 @@ BOOL LLPanelObject::postBuild()
|
|||
// Phantom checkbox
|
||||
mCheckPhantom = getChild<LLCheckBoxCtrl>("Phantom Checkbox Ctrl");
|
||||
childSetCommitCallback("Phantom Checkbox Ctrl",onCommitPhantom,this);
|
||||
|
||||
|
||||
// Position
|
||||
mMenuPastePos = getChild<LLMenuButton>("paste_pos_btn");
|
||||
mLabelPosition = getChild<LLTextBox>("label position");
|
||||
mCtrlPosX = getChild<LLSpinCtrl>("Pos X");
|
||||
childSetCommitCallback("Pos X",onCommitPosition,this);
|
||||
|
|
@ -129,6 +130,7 @@ BOOL LLPanelObject::postBuild()
|
|||
childSetCommitCallback("Pos Z",onCommitPosition,this);
|
||||
|
||||
// Scale
|
||||
mMenuPasteSize = getChild<LLMenuButton>("paste_size_btn");
|
||||
mLabelSize = getChild<LLTextBox>("label size");
|
||||
mCtrlScaleX = getChild<LLSpinCtrl>("Scale X");
|
||||
childSetCommitCallback("Scale X",onCommitScale,this);
|
||||
|
|
@ -142,6 +144,7 @@ BOOL LLPanelObject::postBuild()
|
|||
childSetCommitCallback("Scale Z",onCommitScale,this);
|
||||
|
||||
// Rotation
|
||||
mMenuPasteRot = getChild<LLMenuButton>("paste_rot_btn");
|
||||
mLabelRotation = getChild<LLTextBox>("label rotation");
|
||||
mCtrlRotX = getChild<LLSpinCtrl>("Rot X");
|
||||
childSetCommitCallback("Rot X",onCommitRotation,this);
|
||||
|
|
@ -291,6 +294,8 @@ LLPanelObject::LLPanelObject()
|
|||
mHasRotClipboard(FALSE),
|
||||
mSizeChanged(FALSE)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("PanelObject.menuDoToSelected", boost::bind(&LLPanelObject::menuDoToSelected, this, _2));
|
||||
mEnableCallbackRegistrar.add("PanelObject.menuEnable", boost::bind(&LLPanelObject::menuEnableItem, this, _2));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -377,7 +382,7 @@ void LLPanelObject::getState( )
|
|||
calcp->clearVar(LLCalc::Z_POS);
|
||||
}
|
||||
|
||||
|
||||
mMenuPastePos->setEnabled(enable_move);
|
||||
mLabelPosition->setEnabled( enable_move );
|
||||
mCtrlPosX->setEnabled(enable_move);
|
||||
mCtrlPosY->setEnabled(enable_move);
|
||||
|
|
@ -403,6 +408,7 @@ void LLPanelObject::getState( )
|
|||
calcp->setVar(LLCalc::Z_SCALE, 0.f);
|
||||
}
|
||||
|
||||
mMenuPasteSize->setEnabled(enable_scale);
|
||||
mLabelSize->setEnabled( enable_scale );
|
||||
mCtrlScaleX->setEnabled( enable_scale );
|
||||
mCtrlScaleY->setEnabled( enable_scale );
|
||||
|
|
@ -434,6 +440,7 @@ void LLPanelObject::getState( )
|
|||
calcp->clearVar(LLCalc::Z_ROT);
|
||||
}
|
||||
|
||||
mMenuPasteRot->setEnabled(enable_rotate);
|
||||
mLabelRotation->setEnabled( enable_rotate );
|
||||
mCtrlRotX->setEnabled( enable_rotate );
|
||||
mCtrlRotY->setEnabled( enable_rotate );
|
||||
|
|
@ -1648,6 +1655,8 @@ void LLPanelObject::sendPosition(BOOL btn_down)
|
|||
LLVector3 newpos(mCtrlPosX->get(), mCtrlPosY->get(), mCtrlPosZ->get());
|
||||
LLViewerRegion* regionp = mObject->getRegion();
|
||||
|
||||
if (!regionp) return;
|
||||
|
||||
// Clamp the Z height
|
||||
const F32 height = newpos.mV[VZ];
|
||||
const F32 min_height = LLWorld::getInstance()->getMinAllowedZ(mObject, mObject->getPositionGlobal());
|
||||
|
|
@ -2005,6 +2014,57 @@ void LLPanelObject::onCommitSculptType(LLUICtrl *ctrl, void* userdata)
|
|||
self->sendSculpt();
|
||||
}
|
||||
|
||||
void LLPanelObject::menuDoToSelected(const LLSD& userdata)
|
||||
{
|
||||
std::string command = userdata.asString();
|
||||
|
||||
// paste
|
||||
if (command == "pos_paste")
|
||||
{
|
||||
onPastePos();
|
||||
}
|
||||
else if (command == "size_paste")
|
||||
{
|
||||
onPasteSize();
|
||||
}
|
||||
else if (command == "rot_paste")
|
||||
{
|
||||
onPasteRot();
|
||||
}
|
||||
// copy
|
||||
else if (command == "pos_copy")
|
||||
{
|
||||
onCopyPos();
|
||||
}
|
||||
else if (command == "size_copy")
|
||||
{
|
||||
onCopySize();
|
||||
}
|
||||
else if (command == "rot_copy")
|
||||
{
|
||||
onCopyRot();
|
||||
}
|
||||
}
|
||||
|
||||
bool LLPanelObject::menuEnableItem(const LLSD& userdata)
|
||||
{
|
||||
std::string command = userdata.asString();
|
||||
|
||||
if (command == "pos_paste")
|
||||
{
|
||||
return mHasPosClipboard;
|
||||
}
|
||||
else if (command == "size_paste")
|
||||
{
|
||||
return mHasSizeClipboard;
|
||||
}
|
||||
else if (command == "rot_paste")
|
||||
{
|
||||
return mHasRotClipboard;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void LLPanelObject::onCopyPos()
|
||||
{
|
||||
mClipboardPos = LLVector3(mCtrlPosX->get(), mCtrlPosY->get(), mCtrlPosZ->get());
|
||||
|
|
@ -2037,14 +2097,20 @@ void LLPanelObject::onCopyRot()
|
|||
|
||||
void LLPanelObject::onPastePos()
|
||||
{
|
||||
if(!mHasPosClipboard) return;
|
||||
if (!mHasPosClipboard) return;
|
||||
if (mObject.isNull()) return;
|
||||
|
||||
LLViewerRegion* regionp = mObject->getRegion();
|
||||
if (!regionp) return;
|
||||
|
||||
|
||||
// Clamp pos on non-attachments, just keep the prims within the region
|
||||
if (!mObject->isAttachment())
|
||||
{
|
||||
mClipboardPos.mV[VX] = llclamp( mClipboardPos.mV[VX], 0.f, 256.f);
|
||||
mClipboardPos.mV[VY] = llclamp( mClipboardPos.mV[VY], 0.f, 256.f);
|
||||
//height will get properly clammed by sendPosition
|
||||
F32 max_width = regionp->getWidth(); // meters
|
||||
mClipboardPos.mV[VX] = llclamp(mClipboardPos.mV[VX], 0.f, max_width);
|
||||
mClipboardPos.mV[VY] = llclamp(mClipboardPos.mV[VY], 0.f, max_width);
|
||||
//height will get properly clamped by sendPosition
|
||||
}
|
||||
|
||||
mCtrlPosX->set( mClipboardPos.mV[VX] );
|
||||
|
|
@ -2056,7 +2122,7 @@ void LLPanelObject::onPastePos()
|
|||
|
||||
void LLPanelObject::onPasteSize()
|
||||
{
|
||||
if(!mHasSizeClipboard) return;
|
||||
if (!mHasSizeClipboard) return;
|
||||
|
||||
mClipboardSize.mV[VX] = llclamp(mClipboardSize.mV[VX], MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE);
|
||||
mClipboardSize.mV[VY] = llclamp(mClipboardSize.mV[VY], MIN_PRIM_SCALE, DEFAULT_MAX_PRIM_SCALE);
|
||||
|
|
@ -2071,7 +2137,7 @@ void LLPanelObject::onPasteSize()
|
|||
|
||||
void LLPanelObject::onPasteRot()
|
||||
{
|
||||
if(!mHasRotClipboard) return;
|
||||
if (!mHasRotClipboard) return;
|
||||
|
||||
mCtrlRotX->set( mClipboardRot.mV[VX] );
|
||||
mCtrlRotY->set( mClipboardRot.mV[VY] );
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ class LLCheckBoxCtrl;
|
|||
class LLTextBox;
|
||||
class LLUICtrl;
|
||||
class LLButton;
|
||||
class LLMenuButton;
|
||||
class LLViewerObject;
|
||||
class LLComboBox;
|
||||
class LLColorSwatchCtrl;
|
||||
|
|
@ -81,6 +82,9 @@ public:
|
|||
BOOL onDropSculpt(LLInventoryItem* item);
|
||||
static void onCommitSculptType( LLUICtrl *ctrl, void* userdata);
|
||||
|
||||
void menuDoToSelected(const LLSD& userdata);
|
||||
bool menuEnableItem(const LLSD& userdata);
|
||||
|
||||
protected:
|
||||
void getState();
|
||||
|
||||
|
|
@ -137,17 +141,20 @@ protected:
|
|||
LLTextBox* mLabelRevolutions;
|
||||
LLSpinCtrl* mSpinRevolutions;
|
||||
|
||||
LLMenuButton* mMenuPastePos;
|
||||
LLTextBox* mLabelPosition;
|
||||
LLSpinCtrl* mCtrlPosX;
|
||||
LLSpinCtrl* mCtrlPosY;
|
||||
LLSpinCtrl* mCtrlPosZ;
|
||||
|
||||
LLMenuButton* mMenuPasteSize;
|
||||
LLTextBox* mLabelSize;
|
||||
LLSpinCtrl* mCtrlScaleX;
|
||||
LLSpinCtrl* mCtrlScaleY;
|
||||
LLSpinCtrl* mCtrlScaleZ;
|
||||
BOOL mSizeChanged;
|
||||
|
||||
LLMenuButton* mMenuPasteRot;
|
||||
LLTextBox* mLabelRotation;
|
||||
LLSpinCtrl* mCtrlRotX;
|
||||
LLSpinCtrl* mCtrlRotY;
|
||||
|
|
|
|||
|
|
@ -1430,6 +1430,18 @@ even though the user gets a free copy.
|
|||
tool_tip="Causes object to not collide with other objects or avatars"
|
||||
top_pad="0"
|
||||
width="123" />
|
||||
<menu_button
|
||||
menu_filename="menu_copy_paste_pos.xml"
|
||||
follows="top|left"
|
||||
height="11"
|
||||
image_disabled="OptionsMenu_Disabled"
|
||||
image_selected="OptionsMenu_Press"
|
||||
image_unselected="OptionsMenu_Off"
|
||||
layout="topleft"
|
||||
top_pad="10"
|
||||
name="paste_pos_btn"
|
||||
tool_tip="Paste options"
|
||||
width="19"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -1437,9 +1449,11 @@ even though the user gets a free copy.
|
|||
height="10"
|
||||
layout="topleft"
|
||||
name="label position"
|
||||
top_pad="10"
|
||||
tool_tip="Position (meters)"
|
||||
left_pad="3"
|
||||
top_delta="0"
|
||||
width="121">
|
||||
Position (meters)
|
||||
Position
|
||||
</text>
|
||||
<spinner
|
||||
follows="left|top"
|
||||
|
|
@ -1449,7 +1463,7 @@ even though the user gets a free copy.
|
|||
label="X"
|
||||
label_width="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left_delta="-22"
|
||||
max_val="512"
|
||||
min_val="-256"
|
||||
name="Pos X"
|
||||
|
|
@ -1485,17 +1499,31 @@ even though the user gets a free copy.
|
|||
text_enabled_color="0 0.8 1 .65"
|
||||
top_pad="3"
|
||||
width="87" />
|
||||
<menu_button
|
||||
menu_filename="menu_copy_paste_size.xml"
|
||||
follows="top|left"
|
||||
height="11"
|
||||
image_disabled="OptionsMenu_Disabled"
|
||||
image_selected="OptionsMenu_Press"
|
||||
image_unselected="OptionsMenu_Off"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="10"
|
||||
name="paste_size_btn"
|
||||
tool_tip="Paste options"
|
||||
width="19"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left_pad="3"
|
||||
top_delta="0"
|
||||
name="label size"
|
||||
top_pad="6"
|
||||
tool_tip="Size (meters)"
|
||||
width="121">
|
||||
Size (meters)
|
||||
Size
|
||||
</text>
|
||||
<spinner
|
||||
follows="left|top"
|
||||
|
|
@ -1505,7 +1533,7 @@ even though the user gets a free copy.
|
|||
label="X"
|
||||
label_width="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left_delta="-22"
|
||||
max_val="64"
|
||||
min_val="0.01"
|
||||
name="Scale X"
|
||||
|
|
@ -1542,17 +1570,31 @@ even though the user gets a free copy.
|
|||
text_enabled_color="1 1 1 1"
|
||||
top_pad="3"
|
||||
width="87" />
|
||||
<menu_button
|
||||
menu_filename="menu_copy_paste_rot.xml"
|
||||
follows="top|left"
|
||||
height="11"
|
||||
image_disabled="OptionsMenu_Disabled"
|
||||
image_selected="OptionsMenu_Press"
|
||||
image_unselected="OptionsMenu_Off"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="10"
|
||||
name="paste_rot_btn"
|
||||
tool_tip="Paste options"
|
||||
width="19"/>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left_pad="3"
|
||||
top_delta="0"
|
||||
name="label rotation"
|
||||
top_pad="10"
|
||||
tool_tip="Rotation (degrees)"
|
||||
width="121">
|
||||
Rotation (degrees)
|
||||
Rotation
|
||||
</text>
|
||||
<spinner
|
||||
decimal_digits="2"
|
||||
|
|
@ -1563,7 +1605,7 @@ even though the user gets a free copy.
|
|||
label="X"
|
||||
label_width="10"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left_delta="-22"
|
||||
max_val="9999"
|
||||
min_val="-9999"
|
||||
name="Rot X"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toggleable_menu
|
||||
layout="topleft"
|
||||
name="Copy Paste Position Menu">
|
||||
<menu_item_call
|
||||
label="Copy Position"
|
||||
layout="topleft"
|
||||
name="pos_copy"
|
||||
visible="true">
|
||||
<on_click function="PanelObject.menuDoToSelected" parameter="pos_copy" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Paste Position"
|
||||
layout="topleft"
|
||||
name="pos_paste"
|
||||
visible="true">
|
||||
<on_click function="PanelObject.menuDoToSelected" parameter="pos_paste" />
|
||||
<on_enable function="PanelObject.menuEnable" parameter="pos_paste" />
|
||||
</menu_item_call>
|
||||
</toggleable_menu>
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toggleable_menu
|
||||
layout="topleft"
|
||||
name="Copy Paste Rotation Menu">
|
||||
<menu_item_call
|
||||
label="Copy Rotation"
|
||||
layout="topleft"
|
||||
name="rot_copy"
|
||||
visible="true">
|
||||
<on_click function="PanelObject.menuDoToSelected" parameter="rot_copy" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Paste Rotation"
|
||||
layout="topleft"
|
||||
name="rot_paste"
|
||||
visible="true">
|
||||
<on_click function="PanelObject.menuDoToSelected" parameter="rot_paste" />
|
||||
<on_enable function="PanelObject.menuEnable" parameter="rot_paste" />
|
||||
</menu_item_call>
|
||||
</toggleable_menu>
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toggleable_menu
|
||||
layout="topleft"
|
||||
name="Copy Paste Size Menu">
|
||||
<menu_item_call
|
||||
label="Copy Size"
|
||||
layout="topleft"
|
||||
name="size_copy"
|
||||
visible="true">
|
||||
<on_click function="PanelObject.menuDoToSelected" parameter="size_copy" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Paste Size"
|
||||
layout="topleft"
|
||||
name="size_paste"
|
||||
visible="true">
|
||||
<on_click function="PanelObject.menuDoToSelected" parameter="size_paste" />
|
||||
<on_enable function="PanelObject.menuEnable" parameter="size_paste" />
|
||||
</menu_item_call>
|
||||
</toggleable_menu>
|
||||
|
||||
Loading…
Reference in New Issue