Animate Tool Flip and Rotate buttons
This commit is contained in:
parent
ce5a89a7b1
commit
e3f2292b34
2 changed files with 72 additions and 0 deletions
|
@ -255,6 +255,10 @@ class ArrowToolOptionsBox final : public ToolOptionsBox {
|
||||||
|
|
||||||
ToolOptionCheckbox *m_globalKey;
|
ToolOptionCheckbox *m_globalKey;
|
||||||
|
|
||||||
|
// Flip buttons
|
||||||
|
QPushButton *m_hFlipButton, *m_vFlipButton, *m_leftRotateButton,
|
||||||
|
*m_rightRotateButton;
|
||||||
|
|
||||||
// enables adjusting value by dragging on the label
|
// enables adjusting value by dragging on the label
|
||||||
void connectLabelAndField(ClickableLabel *label, MeasuredValueField *field);
|
void connectLabelAndField(ClickableLabel *label, MeasuredValueField *field);
|
||||||
|
|
||||||
|
@ -283,6 +287,11 @@ protected slots:
|
||||||
void onCurrentStageObjectComboActivated(int index);
|
void onCurrentStageObjectComboActivated(int index);
|
||||||
|
|
||||||
void onCurrentAxisChanged(int);
|
void onCurrentAxisChanged(int);
|
||||||
|
|
||||||
|
void onFlipHorizontal();
|
||||||
|
void onFlipVertical();
|
||||||
|
void onRotateLeft();
|
||||||
|
void onRotateRight();
|
||||||
};
|
};
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
|
@ -549,6 +549,32 @@ ArrowToolOptionsBox::ArrowToolOptionsBox(
|
||||||
m_zField->setPrecision(4);
|
m_zField->setPrecision(4);
|
||||||
m_noScaleZField->setPrecision(4);
|
m_noScaleZField->setPrecision(4);
|
||||||
|
|
||||||
|
m_hFlipButton = new QPushButton(this);
|
||||||
|
m_vFlipButton = new QPushButton(this);
|
||||||
|
|
||||||
|
m_leftRotateButton = new QPushButton(this);
|
||||||
|
m_rightRotateButton = new QPushButton(this);
|
||||||
|
|
||||||
|
m_hFlipButton->setFixedSize(QSize(20, 20));
|
||||||
|
m_vFlipButton->setFixedSize(QSize(20, 20));
|
||||||
|
|
||||||
|
m_leftRotateButton->setFixedSize(QSize(20, 20));
|
||||||
|
m_rightRotateButton->setFixedSize(QSize(20, 20));
|
||||||
|
|
||||||
|
m_hFlipButton->setIcon(createQIcon("fliphoriz"));
|
||||||
|
m_hFlipButton->setIconSize(QSize(20, 20));
|
||||||
|
m_vFlipButton->setIcon(createQIcon("flipvert"));
|
||||||
|
m_vFlipButton->setIconSize(QSize(20, 20));
|
||||||
|
m_leftRotateButton->setIcon(createQIcon("rotateleft"));
|
||||||
|
m_leftRotateButton->setIconSize(QSize(20, 20));
|
||||||
|
m_rightRotateButton->setIcon(createQIcon("rotateright"));
|
||||||
|
m_rightRotateButton->setIconSize(QSize(20, 20));
|
||||||
|
|
||||||
|
m_hFlipButton->setToolTip(tr("Flip Object Horizontally"));
|
||||||
|
m_vFlipButton->setToolTip(tr("Flip Object Vertically"));
|
||||||
|
m_leftRotateButton->setToolTip(tr("Rotate Object Left"));
|
||||||
|
m_rightRotateButton->setToolTip(tr("Rotate Object Right"));
|
||||||
|
|
||||||
bool splined = isCurrentObjectSplined();
|
bool splined = isCurrentObjectSplined();
|
||||||
if (splined != m_splined) m_splined = splined;
|
if (splined != m_splined) m_splined = splined;
|
||||||
setSplined(m_splined);
|
setSplined(m_splined);
|
||||||
|
@ -637,6 +663,8 @@ ArrowToolOptionsBox::ArrowToolOptionsBox(
|
||||||
rotLay->addWidget(m_rotationLabel, 0);
|
rotLay->addWidget(m_rotationLabel, 0);
|
||||||
rotLay->addSpacing(LABEL_SPACING);
|
rotLay->addSpacing(LABEL_SPACING);
|
||||||
rotLay->addWidget(m_rotationField, 10);
|
rotLay->addWidget(m_rotationField, 10);
|
||||||
|
rotLay->addWidget(m_leftRotateButton);
|
||||||
|
rotLay->addWidget(m_rightRotateButton);
|
||||||
|
|
||||||
rotLay->addSpacing(ITEM_SPACING);
|
rotLay->addSpacing(ITEM_SPACING);
|
||||||
rotLay->addWidget(new DVGui::Separator("", this, false));
|
rotLay->addWidget(new DVGui::Separator("", this, false));
|
||||||
|
@ -666,6 +694,7 @@ ArrowToolOptionsBox::ArrowToolOptionsBox(
|
||||||
scaleLay->addWidget(m_scaleHLabel, 0);
|
scaleLay->addWidget(m_scaleHLabel, 0);
|
||||||
scaleLay->addSpacing(LABEL_SPACING);
|
scaleLay->addSpacing(LABEL_SPACING);
|
||||||
scaleLay->addWidget(m_scaleHField, 10);
|
scaleLay->addWidget(m_scaleHField, 10);
|
||||||
|
scaleLay->addWidget(m_hFlipButton);
|
||||||
scaleLay->addWidget(m_lockScaleHCheckbox, 0);
|
scaleLay->addWidget(m_lockScaleHCheckbox, 0);
|
||||||
|
|
||||||
scaleLay->addSpacing(ITEM_SPACING);
|
scaleLay->addSpacing(ITEM_SPACING);
|
||||||
|
@ -673,6 +702,7 @@ ArrowToolOptionsBox::ArrowToolOptionsBox(
|
||||||
scaleLay->addWidget(m_scaleVLabel, 0);
|
scaleLay->addWidget(m_scaleVLabel, 0);
|
||||||
scaleLay->addSpacing(LABEL_SPACING);
|
scaleLay->addSpacing(LABEL_SPACING);
|
||||||
scaleLay->addWidget(m_scaleVField, 10);
|
scaleLay->addWidget(m_scaleVField, 10);
|
||||||
|
scaleLay->addWidget(m_vFlipButton);
|
||||||
scaleLay->addWidget(m_lockScaleVCheckbox, 0);
|
scaleLay->addWidget(m_lockScaleVCheckbox, 0);
|
||||||
|
|
||||||
scaleLay->addSpacing(ITEM_SPACING);
|
scaleLay->addSpacing(ITEM_SPACING);
|
||||||
|
@ -793,6 +823,11 @@ ArrowToolOptionsBox::ArrowToolOptionsBox(
|
||||||
connectLabelAndField(m_nsCenterLabel, m_nsCenterField);
|
connectLabelAndField(m_nsCenterLabel, m_nsCenterField);
|
||||||
|
|
||||||
onCurrentAxisChanged(activeAxisProp->getIndex());
|
onCurrentAxisChanged(activeAxisProp->getIndex());
|
||||||
|
|
||||||
|
connect(m_hFlipButton, SIGNAL(clicked()), SLOT(onFlipHorizontal()));
|
||||||
|
connect(m_vFlipButton, SIGNAL(clicked()), SLOT(onFlipVertical()));
|
||||||
|
connect(m_leftRotateButton, SIGNAL(clicked()), SLOT(onRotateLeft()));
|
||||||
|
connect(m_rightRotateButton, SIGNAL(clicked()), SLOT(onRotateRight()));
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -1004,6 +1039,34 @@ void ArrowToolOptionsBox::onCurrentAxisChanged(int axisId) {
|
||||||
m_pickWidget->setVisible(axisId == AllAxis);
|
m_pickWidget->setVisible(axisId == AllAxis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ArrowToolOptionsBox::onFlipHorizontal() {
|
||||||
|
m_scaleHField->setValue(m_scaleHField->getValue() * -1);
|
||||||
|
emit m_scaleHField->measuredValueChanged(m_scaleHField->getMeasuredValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ArrowToolOptionsBox::onFlipVertical() {
|
||||||
|
m_scaleVField->setValue(m_scaleVField->getValue() * -1);
|
||||||
|
emit m_scaleVField->measuredValueChanged(m_scaleVField->getMeasuredValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ArrowToolOptionsBox::onRotateLeft() {
|
||||||
|
m_rotationField->setValue(m_rotationField->getValue() + 90);
|
||||||
|
emit m_rotationField->measuredValueChanged(m_rotationField->getMeasuredValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void ArrowToolOptionsBox::onRotateRight() {
|
||||||
|
m_rotationField->setValue(m_rotationField->getValue() - 90);
|
||||||
|
emit m_rotationField->measuredValueChanged(m_rotationField->getMeasuredValue());
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//
|
//
|
||||||
// SelectionToolOptionsBox
|
// SelectionToolOptionsBox
|
||||||
|
|
Loading…
Reference in a new issue