[PD] Set revolution taskview items based on method
This commit is contained in:
@@ -230,6 +230,71 @@ void TaskRevolutionParameters::addAxisToCombo(App::DocumentObject* linkObj,
|
||||
lnk.setValue(linkObj,std::vector<std::string>(1,linkSubname));
|
||||
}
|
||||
|
||||
void TaskRevolutionParameters::setCheckboxes(PartDesign::Revolution::RevolMethod mode)
|
||||
{
|
||||
// disable/hide everything unless we are sure we don't need it
|
||||
// exception: the direction parameters are in any case visible
|
||||
bool isRevolveAngleVisible = false;
|
||||
bool isRevolveAngle2Visible = false;
|
||||
bool isMidplaneEnabled = false;
|
||||
bool isMidplaneVisible = false;
|
||||
bool isReversedEnabled = false;
|
||||
bool isFaceEditEnabled = false;
|
||||
|
||||
if (mode == PartDesign::Revolution::RevolMethod::Dimension) {
|
||||
isRevolveAngleVisible = true;
|
||||
ui->revolveAngle->selectNumber();
|
||||
QMetaObject::invokeMethod(ui->revolveAngle, "setFocus", Qt::QueuedConnection);
|
||||
isMidplaneVisible = true;
|
||||
isMidplaneEnabled = true;
|
||||
// Reverse only makes sense if Midplane is not true
|
||||
isReversedEnabled = !ui->checkBoxMidplane->isChecked();
|
||||
}
|
||||
else if (mode == PartDesign::Revolution::RevolMethod::ThroughAll && isGroove) {
|
||||
isMidplaneEnabled = true;
|
||||
isMidplaneVisible = true;
|
||||
isReversedEnabled = !ui->checkBoxMidplane->isChecked();
|
||||
}
|
||||
else if (mode == PartDesign::Revolution::RevolMethod::ToLast && !isGroove) {
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
else if (mode == PartDesign::Revolution::RevolMethod::ToFirst) {
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
else if (mode == PartDesign::Revolution::RevolMethod::ToFace) {
|
||||
isReversedEnabled = true;
|
||||
isFaceEditEnabled = true;
|
||||
QMetaObject::invokeMethod(ui->lineFaceName, "setFocus", Qt::QueuedConnection);
|
||||
// Go into reference selection mode if no face has been selected yet
|
||||
if (ui->lineFaceName->property("FeatureName").isNull())
|
||||
ui->buttonFace->setChecked(true);
|
||||
}
|
||||
else if (mode == PartDesign::Revolution::RevolMethod::TwoDimensions) {
|
||||
isRevolveAngleVisible = true;
|
||||
isRevolveAngle2Visible = true;
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
|
||||
ui->revolveAngle->setVisible(isRevolveAngleVisible);
|
||||
ui->revolveAngle->setEnabled(isRevolveAngleVisible);
|
||||
ui->labelAngle->setVisible(isRevolveAngleVisible);
|
||||
|
||||
ui->revolveAngle2->setVisible(isRevolveAngle2Visible);
|
||||
ui->revolveAngle2->setEnabled(isRevolveAngle2Visible);
|
||||
ui->labelAngle2->setVisible(isRevolveAngle2Visible);
|
||||
|
||||
ui->checkBoxMidplane->setEnabled(isMidplaneEnabled);
|
||||
ui->checkBoxMidplane->setVisible(isMidplaneVisible);
|
||||
|
||||
ui->checkBoxReversed->setEnabled(isReversedEnabled);
|
||||
|
||||
ui->buttonFace->setEnabled(isFaceEditEnabled);
|
||||
ui->lineFaceName->setEnabled(isFaceEditEnabled);
|
||||
if (!isFaceEditEnabled) {
|
||||
ui->buttonFace->setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
void TaskRevolutionParameters::connectSignals()
|
||||
{
|
||||
connect(ui->revolveAngle, qOverload<double>(&Gui::QuantitySpinBox::valueChanged),
|
||||
@@ -252,12 +317,13 @@ void TaskRevolutionParameters::connectSignals()
|
||||
this, &TaskRevolutionParameters::onFaceName);
|
||||
}
|
||||
|
||||
void TaskRevolutionParameters::updateUI(int /*index*/)
|
||||
void TaskRevolutionParameters::updateUI(int index)
|
||||
{
|
||||
if (blockUpdate)
|
||||
return;
|
||||
Base::StateLocker lock(blockUpdate, true);
|
||||
fillAxisCombo();
|
||||
setCheckboxes(static_cast<PartDesign::Revolution::RevolMethod>(index));
|
||||
}
|
||||
|
||||
void TaskRevolutionParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#ifndef GUI_TASKVIEW_TaskRevolutionParameters_H
|
||||
#define GUI_TASKVIEW_TaskRevolutionParameters_H
|
||||
|
||||
#include <Mod/PartDesign/App/FeatureRevolution.h>
|
||||
#include <Mod/PartDesign/App/FeatureGroove.h>
|
||||
#include "TaskSketchBasedParameters.h"
|
||||
#include "ViewProviderRevolution.h"
|
||||
|
||||
@@ -77,6 +79,7 @@ protected:
|
||||
bool getReversed() const;
|
||||
QString getFaceName() const;
|
||||
void setupDialog(void);
|
||||
void setCheckboxes(PartDesign::Revolution::RevolMethod mode);
|
||||
|
||||
//mirrors of revolution's or groove's properties
|
||||
//should have been done by inheriting revolution and groove from common class...
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<widget class="QLabel" name="labelAngle">
|
||||
<property name="text">
|
||||
<string>Angle:</string>
|
||||
</property>
|
||||
|
||||
Reference in New Issue
Block a user