[PD] Pad/Pocket: sort out duplicated code
the checkboxes are almost identical and it avoids work to have them in one location
This commit is contained in:
@@ -25,10 +25,10 @@
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <sstream>
|
||||
# include <QRegExp>
|
||||
# include <QTextStream>
|
||||
# include <Precision.hxx>
|
||||
# include <QRegExp>
|
||||
# include <QSignalBlocker>
|
||||
# include <QTextStream>
|
||||
#endif
|
||||
|
||||
#include "ui_TaskPadPocketParameters.h"
|
||||
@@ -389,6 +389,82 @@ void TaskExtrudeParameters::addAxisToCombo(App::DocumentObject* linkObj, std::st
|
||||
lnk.setValue(linkObj, std::vector<std::string>(1, linkSubname));
|
||||
}
|
||||
|
||||
void TaskExtrudeParameters::setCheckboxes(Modes mode, Type type)
|
||||
{
|
||||
// disable/hide everything unless we are sure we don't need it
|
||||
// exception: the direction parameters are in any case visible
|
||||
bool isLengthEditVisible = false;
|
||||
bool isLengthEdit2Visible = false;
|
||||
bool isOffsetEditVisible = false;
|
||||
bool isOffsetEditEnabled = true;
|
||||
bool isMidplaneEnabled = false;
|
||||
bool isMidplaneVisible = false;
|
||||
bool isReversedEnabled = false;
|
||||
bool isFaceEditEnabled = false;
|
||||
|
||||
if (mode == Modes::Dimension) {
|
||||
isLengthEditVisible = true;
|
||||
ui->lengthEdit->selectNumber();
|
||||
QMetaObject::invokeMethod(ui->lengthEdit, "setFocus", Qt::QueuedConnection);
|
||||
isMidplaneVisible = true;
|
||||
isMidplaneEnabled = true;
|
||||
// Reverse only makes sense if Midplane is not true
|
||||
isReversedEnabled = !ui->checkBoxMidplane->isChecked();
|
||||
}
|
||||
else if (mode == Modes::ThroughAll && type = Type::Pocket) {
|
||||
isOffsetEditVisible = true;
|
||||
isOffsetEditEnabled = false; // offset may have some meaning for through all but it doesn't work
|
||||
isMidplaneEnabled = true;
|
||||
isReversedEnabled = !ui->checkBoxMidplane->isChecked();
|
||||
}
|
||||
else if (mode == Modes::ToLast && type == Type::Pad) {
|
||||
isOffsetEditVisible = true;
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
else if (mode == Modes::ToFirst) {
|
||||
isOffsetEditVisible = true;
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
else if (mode == Modes::ToFace) {
|
||||
isOffsetEditVisible = true;
|
||||
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())
|
||||
onButtonFace(true);
|
||||
}
|
||||
else if (mode == Modes::TwoDimensions) {
|
||||
isLengthEditVisible = true;
|
||||
isLengthEdit2Visible = true;
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
|
||||
ui->lengthEdit->setVisible(isLengthEditVisible);
|
||||
ui->lengthEdit->setEnabled(isLengthEditVisible);
|
||||
ui->labelLength->setVisible(isLengthEditVisible);
|
||||
ui->checkBoxAlongDirection->setVisible(isLengthEditVisible);
|
||||
|
||||
ui->lengthEdit2->setVisible(isLengthEdit2Visible);
|
||||
ui->lengthEdit2->setEnabled(isLengthEdit2Visible);
|
||||
ui->labelLength2->setVisible(isLengthEdit2Visible);
|
||||
|
||||
ui->offsetEdit->setVisible(isOffsetEditVisible);
|
||||
ui->offsetEdit->setEnabled(isOffsetEditVisible && isOffsetEditEnabled);
|
||||
ui->labelOffset->setVisible(isOffsetEditVisible);
|
||||
|
||||
ui->checkBoxMidplane->setEnabled(isMidplaneEnabled);
|
||||
ui->checkBoxMidplane->setVisible(isMidplaneVisible);
|
||||
|
||||
ui->checkBoxReversed->setEnabled(isReversedEnabled);
|
||||
|
||||
ui->buttonFace->setEnabled(isFaceEditEnabled);
|
||||
ui->lineFaceName->setEnabled(isFaceEditEnabled);
|
||||
if (!isFaceEditEnabled) {
|
||||
onButtonFace(false);
|
||||
}
|
||||
}
|
||||
|
||||
void TaskExtrudeParameters::onDirectionCBChanged(int num)
|
||||
{
|
||||
PartDesign::FeatureExtrude* extrude = static_cast<PartDesign::FeatureExtrude*>(vp->getObject());
|
||||
|
||||
@@ -67,6 +67,19 @@ public:
|
||||
bool hasSketch = true);
|
||||
void applyParameters(QString facename);
|
||||
|
||||
enum class Type {
|
||||
Pad,
|
||||
Pocket
|
||||
};
|
||||
enum class Modes {
|
||||
Dimension,
|
||||
ThroughAll,
|
||||
ToLast = ThroughAll,
|
||||
ToFirst,
|
||||
ToFace,
|
||||
TwoDimensions
|
||||
};
|
||||
|
||||
protected Q_SLOTS:
|
||||
void onLengthChanged(double);
|
||||
void onLength2Changed(double);
|
||||
@@ -84,6 +97,7 @@ protected Q_SLOTS:
|
||||
virtual void onModeChanged(int);
|
||||
|
||||
protected:
|
||||
void setCheckboxes(Modes mode, Type type);
|
||||
void setupDialog();
|
||||
void readValuesFromHistory();
|
||||
void changeEvent(QEvent *e) override;
|
||||
|
||||
@@ -80,70 +80,8 @@ void TaskPadParameters::updateUI(int index)
|
||||
{
|
||||
// update direction combobox
|
||||
fillDirectionCombo();
|
||||
|
||||
// disable/hide everything unless we are sure we don't need it
|
||||
// exception: the direction parameters are in any case visible
|
||||
bool isLengthEditVisible = false;
|
||||
bool isLengthEdit2Visible = false;
|
||||
bool isOffsetEditVisible = false;
|
||||
bool isMidplaneEnabled = false;
|
||||
bool isMidplaneVisible = false;
|
||||
bool isReversedEnabled = false;
|
||||
bool isFaceEditEnabled = false;
|
||||
|
||||
Modes mode = static_cast<Modes>(index);
|
||||
|
||||
if (mode == Modes::Dimension) {
|
||||
isLengthEditVisible = true;
|
||||
ui->lengthEdit->selectNumber();
|
||||
QMetaObject::invokeMethod(ui->lengthEdit, "setFocus", Qt::QueuedConnection);
|
||||
isMidplaneEnabled = !ui->checkBoxReversed->isChecked();
|
||||
isMidplaneVisible = true;
|
||||
// Reverse only makes sense if Midplane is not true
|
||||
isReversedEnabled = !ui->checkBoxMidplane->isChecked();
|
||||
}
|
||||
else if (mode == Modes::ToLast || mode == Modes::ToFirst) {
|
||||
isOffsetEditVisible = true;
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
else if (mode == Modes::ToFace) {
|
||||
isOffsetEditVisible = 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())
|
||||
onButtonFace(true);
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
else if (mode == Modes::TwoDimensions) {
|
||||
isLengthEditVisible = true;
|
||||
isLengthEdit2Visible = true;
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
|
||||
ui->lengthEdit->setVisible( isLengthEditVisible );
|
||||
ui->lengthEdit->setEnabled( isLengthEditVisible );
|
||||
ui->labelLength->setVisible( isLengthEditVisible );
|
||||
ui->checkBoxAlongDirection->setVisible( isLengthEditVisible );
|
||||
|
||||
ui->offsetEdit->setVisible( isOffsetEditVisible );
|
||||
ui->offsetEdit->setEnabled( isOffsetEditVisible );
|
||||
ui->labelOffset->setVisible( isOffsetEditVisible );
|
||||
|
||||
ui->checkBoxMidplane->setEnabled( isMidplaneEnabled );
|
||||
ui->checkBoxMidplane->setVisible( isMidplaneVisible );
|
||||
|
||||
ui->checkBoxReversed->setEnabled( isReversedEnabled );
|
||||
|
||||
ui->lengthEdit2->setVisible( isLengthEdit2Visible );
|
||||
ui->lengthEdit2->setEnabled( isLengthEdit2Visible );
|
||||
ui->labelLength2->setVisible( isLengthEdit2Visible );
|
||||
|
||||
ui->buttonFace->setEnabled( isFaceEditEnabled );
|
||||
ui->lineFaceName->setEnabled( isFaceEditEnabled );
|
||||
if (!isFaceEditEnabled) {
|
||||
onButtonFace(false);
|
||||
}
|
||||
// set and enable checkboxes
|
||||
setCheckboxes(static_cast<Modes>(index), Type::Pad);
|
||||
}
|
||||
|
||||
void TaskPadParameters::onModeChanged(int index)
|
||||
|
||||
@@ -46,14 +46,6 @@ class TaskPadParameters : public TaskExtrudeParameters
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
enum class Modes {
|
||||
Dimension,
|
||||
ToLast,
|
||||
ToFirst,
|
||||
ToFace,
|
||||
TwoDimensions
|
||||
};
|
||||
|
||||
public:
|
||||
TaskPadParameters(ViewProviderPad *PadView, QWidget *parent = 0, bool newObj=false);
|
||||
~TaskPadParameters();
|
||||
|
||||
@@ -81,80 +81,8 @@ void TaskPocketParameters::updateUI(int index)
|
||||
{
|
||||
// update direction combobox
|
||||
fillDirectionCombo();
|
||||
|
||||
// disable/hide everything unless we are sure we don't need it
|
||||
// exception: the direction parameters are in any case visible
|
||||
bool isLengthEditVisible = false;
|
||||
bool isLengthEdit2Visible = false;
|
||||
bool isOffsetEditVisible = false;
|
||||
bool isOffsetEditEnabled = true;
|
||||
bool isMidplaneEnabled = false;
|
||||
bool isMidplaneVisible = false;
|
||||
bool isReversedEnabled = false;
|
||||
bool isFaceEditEnabled = false;
|
||||
|
||||
Modes mode = static_cast<Modes>(index);
|
||||
|
||||
if (mode == Modes::Dimension) {
|
||||
isLengthEditVisible = true;
|
||||
ui->lengthEdit->selectNumber();
|
||||
QMetaObject::invokeMethod(ui->lengthEdit, "setFocus", Qt::QueuedConnection);
|
||||
isMidplaneVisible = true;
|
||||
isMidplaneEnabled = true;
|
||||
// Reverse only makes sense if Midplane is not true
|
||||
isReversedEnabled = !ui->checkBoxMidplane->isChecked();
|
||||
}
|
||||
else if (mode == Modes::ThroughAll) {
|
||||
isOffsetEditVisible = true;
|
||||
isOffsetEditEnabled = false; // offset may have some meaning for through all but it doesn't work
|
||||
isMidplaneEnabled = true;
|
||||
isReversedEnabled = !ui->checkBoxMidplane->isChecked();
|
||||
}
|
||||
else if (mode == Modes::ToFirst) {
|
||||
isOffsetEditVisible = true;
|
||||
isReversedEnabled = true; // Will change the direction it seeks for its first face?
|
||||
// It may work not quite as expected but useful if sketch oriented upside-down.
|
||||
// (may happen in bodies)
|
||||
// FIXME: Fix probably lies somewhere in IF block on line 125 of FeaturePocket.cpp
|
||||
}
|
||||
else if (mode == Modes::ToFace) {
|
||||
isOffsetEditVisible = true;
|
||||
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())
|
||||
onButtonFace(true);
|
||||
}
|
||||
else if (mode == Modes::TwoDimensions) {
|
||||
isLengthEditVisible = true;
|
||||
isLengthEdit2Visible = true;
|
||||
isReversedEnabled = true;
|
||||
}
|
||||
|
||||
ui->lengthEdit->setVisible( isLengthEditVisible );
|
||||
ui->lengthEdit->setEnabled( isLengthEditVisible );
|
||||
ui->labelLength->setVisible( isLengthEditVisible );
|
||||
ui->checkBoxAlongDirection->setVisible(isLengthEditVisible);
|
||||
|
||||
ui->lengthEdit2->setVisible( isLengthEdit2Visible );
|
||||
ui->lengthEdit2->setEnabled( isLengthEdit2Visible );
|
||||
ui->labelLength2->setVisible( isLengthEdit2Visible );
|
||||
|
||||
ui->offsetEdit->setVisible( isOffsetEditVisible );
|
||||
ui->offsetEdit->setEnabled( isOffsetEditVisible && isOffsetEditEnabled );
|
||||
ui->labelOffset->setVisible( isOffsetEditVisible );
|
||||
|
||||
ui->checkBoxMidplane->setEnabled( isMidplaneEnabled );
|
||||
ui->checkBoxMidplane->setVisible(isMidplaneVisible);
|
||||
|
||||
ui->checkBoxReversed->setEnabled( isReversedEnabled );
|
||||
|
||||
ui->buttonFace->setEnabled( isFaceEditEnabled );
|
||||
ui->lineFaceName->setEnabled( isFaceEditEnabled );
|
||||
if (!isFaceEditEnabled) {
|
||||
onButtonFace(false);
|
||||
}
|
||||
// set and enable checkboxes
|
||||
setCheckboxes(static_cast<Modes>(index), Type::Pocket);
|
||||
}
|
||||
|
||||
void TaskPocketParameters::onModeChanged(int index)
|
||||
|
||||
@@ -46,14 +46,6 @@ class TaskPocketParameters : public TaskExtrudeParameters
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
enum class Modes {
|
||||
Dimension,
|
||||
ThroughAll,
|
||||
ToFirst,
|
||||
ToFace,
|
||||
TwoDimensions
|
||||
};
|
||||
|
||||
public:
|
||||
TaskPocketParameters(ViewProviderPocket *PocketView, QWidget *parent = 0, bool newObj=false);
|
||||
~TaskPocketParameters();
|
||||
|
||||
Reference in New Issue
Block a user