PD: hole change the task panel threaded and model thread checkboxes into a combo/dropdown (#21664)
* PD: hole change threaded and modeled to combo in taskpanel * Gui: Property editor apply review suggestions
This commit is contained in:
@@ -76,11 +76,12 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare
|
||||
auto pcHole = getObject<PartDesign::Hole>();
|
||||
bool isNone = std::string(pcHole->ThreadType.getValueAsString()) == "None";
|
||||
|
||||
ui->Threaded->setHidden(isNone);
|
||||
ui->labelHoleType->setHidden(isNone);
|
||||
ui->HoleType->setHidden(isNone);
|
||||
ui->ThreadSize->setHidden(isNone);
|
||||
ui->labelSize->setHidden(isNone);
|
||||
|
||||
ui->Threaded->setChecked(pcHole->Threaded.getValue());
|
||||
updateHoleTypeCombo();
|
||||
ui->ThreadType->setCurrentIndex(pcHole->ThreadType.getValue());
|
||||
|
||||
ui->ThreadSize->clear();
|
||||
@@ -158,17 +159,15 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare
|
||||
ui->TaperedAngle->setValue(pcHole->TaperedAngle.getValue());
|
||||
ui->Reversed->setChecked(pcHole->Reversed.getValue());
|
||||
|
||||
bool isThreaded = ui->Threaded->isChecked();
|
||||
bool isThreaded = pcHole->Threaded.getValue();
|
||||
bool isModeled = pcHole->ModelThread.getValue();
|
||||
ui->ThreadGroupBox->setVisible(isThreaded);
|
||||
ui->ClearanceWidget->setHidden(isNone || isThreaded);
|
||||
ui->ModelThread->setChecked(isModeled);
|
||||
ui->UseCustomThreadClearance->setChecked(pcHole->UseCustomThreadClearance.getValue());
|
||||
ui->CustomThreadClearance->setValue(pcHole->CustomThreadClearance.getValue());
|
||||
ui->ThreadDepthType->setCurrentIndex(pcHole->ThreadDepthType.getValue());
|
||||
ui->ThreadDepth->setValue(pcHole->ThreadDepth.getValue());
|
||||
|
||||
ui->ModelThread->setEnabled(ui->Threaded->isChecked() && ui->ThreadType->currentIndex() != 0);
|
||||
ui->CustomClearanceWidget->setVisible(isThreaded && isModeled);
|
||||
ui->CustomThreadClearance->setEnabled(ui->UseCustomThreadClearance->isChecked());
|
||||
ui->UpdateView->setChecked(false);
|
||||
@@ -186,8 +185,8 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare
|
||||
setCutDiagram();
|
||||
|
||||
// clang-format off
|
||||
connect(ui->Threaded, &QCheckBox::clicked,
|
||||
this, &TaskHoleParameters::threadedChanged);
|
||||
connect(ui->HoleType, qOverload<int>(&QComboBox::currentIndexChanged),
|
||||
this, &TaskHoleParameters::holeTypeChanged);
|
||||
connect(ui->ThreadType, qOverload<int>(&QComboBox::currentIndexChanged),
|
||||
this, &TaskHoleParameters::threadTypeChanged);
|
||||
connect(ui->ThreadSize, qOverload<int>(&QComboBox::currentIndexChanged),
|
||||
@@ -228,8 +227,6 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare
|
||||
this, &TaskHoleParameters::reversedChanged);
|
||||
connect(ui->TaperedAngle, qOverload<double>(&Gui::QuantitySpinBox::valueChanged),
|
||||
this, &TaskHoleParameters::taperedAngleChanged);
|
||||
connect(ui->ModelThread, &QCheckBox::clicked,
|
||||
this, &TaskHoleParameters::modelThreadChanged);
|
||||
connect(ui->UpdateView, &QCheckBox::toggled,
|
||||
this, &TaskHoleParameters::updateViewChanged);
|
||||
connect(ui->UseCustomThreadClearance, &QCheckBox::toggled,
|
||||
@@ -266,31 +263,23 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare
|
||||
|
||||
TaskHoleParameters::~TaskHoleParameters() = default;
|
||||
|
||||
void TaskHoleParameters::threadedChanged()
|
||||
void TaskHoleParameters::holeTypeChanged(int index)
|
||||
{
|
||||
auto pcHole = getObject<PartDesign::Hole>();
|
||||
|
||||
bool isChecked = ui->Threaded->isChecked();
|
||||
pcHole->Threaded.setValue(isChecked);
|
||||
|
||||
ui->ThreadGroupBox->setVisible(isChecked);
|
||||
ui->ClearanceWidget->setHidden(isChecked);
|
||||
// run modelThreadChanged
|
||||
// it will handle the visibility of the model options
|
||||
modelThreadChanged();
|
||||
recomputeFeature();
|
||||
}
|
||||
|
||||
void TaskHoleParameters::modelThreadChanged()
|
||||
{
|
||||
auto pcHole = getObject<PartDesign::Hole>();
|
||||
bool isThreaded = pcHole->Threaded.getValue();
|
||||
bool isModeled = isThreaded && ui->ModelThread->isChecked();
|
||||
if (!isThreaded) {
|
||||
ui->ModelThread->setChecked(false);
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
auto pcHole = getObject<PartDesign::Hole>();
|
||||
if (!pcHole) {
|
||||
return;
|
||||
}
|
||||
bool isThreaded = getThreaded();
|
||||
bool isModeled = getModelThread();
|
||||
|
||||
pcHole->Threaded.setValue(isThreaded);
|
||||
pcHole->ModelThread.setValue(isModeled);
|
||||
|
||||
ui->ThreadGroupBox->setVisible(isThreaded);
|
||||
ui->ClearanceWidget->setHidden(isThreaded);
|
||||
// update view not active if modeling threads
|
||||
// this will also ensure that the feature is recomputed.
|
||||
ui->UpdateView->setVisible(isModeled);
|
||||
@@ -298,7 +287,7 @@ void TaskHoleParameters::modelThreadChanged()
|
||||
|
||||
// conditional enabling of thread modeling options
|
||||
ui->CustomClearanceWidget->setVisible(isModeled);
|
||||
ui->CustomThreadClearance->setEnabled(ui->UseCustomThreadClearance->isChecked());
|
||||
ui->CustomThreadClearance->setEnabled(pcHole->UseCustomThreadClearance.getValue());
|
||||
|
||||
ui->ThreadDepthWidget->setVisible(isThreaded && isModeled);
|
||||
ui->ThreadDepthDimensionWidget->setVisible(
|
||||
@@ -651,10 +640,11 @@ void TaskHoleParameters::threadTypeChanged(int index)
|
||||
// Threaded checkbox is meaningless if no thread profile is selected.
|
||||
bool isNone = std::string(hole->ThreadType.getValueAsString()) == "None";
|
||||
bool isThreaded = hole->Threaded.getValue();
|
||||
ui->Threaded->setHidden(isNone);
|
||||
ui->ThreadGroupBox->setHidden(isNone || !isThreaded);
|
||||
ui->ThreadSize->setHidden(isNone);
|
||||
ui->labelSize->setHidden(isNone);
|
||||
ui->labelHoleType->setHidden(isNone);
|
||||
ui->HoleType->setHidden(isNone);
|
||||
ui->ClearanceWidget->setHidden(isNone || isThreaded);
|
||||
|
||||
if (TypeClass == QByteArray("None")) {
|
||||
@@ -799,9 +789,8 @@ void TaskHoleParameters::changedObject(const App::Document&, const App::Property
|
||||
widget->setDisabled(ro);
|
||||
};
|
||||
|
||||
if (&Prop == &hole->Threaded) {
|
||||
ui->Threaded->setEnabled(true);
|
||||
updateCheckable(ui->Threaded, hole->Threaded.getValue());
|
||||
if (&Prop == &hole->Threaded || &Prop == &hole->ModelThread) {
|
||||
updateHoleTypeCombo();
|
||||
}
|
||||
else if (&Prop == &hole->ThreadType) {
|
||||
ui->ThreadType->setEnabled(true);
|
||||
@@ -890,10 +879,6 @@ void TaskHoleParameters::changedObject(const App::Document&, const App::Property
|
||||
ui->TaperedAngle->setEnabled(true);
|
||||
updateSpinBox(ui->TaperedAngle, hole->TaperedAngle.getValue());
|
||||
}
|
||||
else if (&Prop == &hole->ModelThread) {
|
||||
ui->ModelThread->setEnabled(true);
|
||||
updateCheckable(ui->ModelThread, hole->ModelThread.getValue());
|
||||
}
|
||||
else if (&Prop == &hole->UseCustomThreadClearance) {
|
||||
ui->UseCustomThreadClearance->setEnabled(true);
|
||||
updateCheckable(ui->UseCustomThreadClearance, hole->UseCustomThreadClearance.getValue());
|
||||
@@ -915,6 +900,24 @@ void TaskHoleParameters::changedObject(const App::Document&, const App::Property
|
||||
}
|
||||
}
|
||||
|
||||
void TaskHoleParameters::updateHoleTypeCombo()
|
||||
{
|
||||
auto hole = getObject<PartDesign::Hole>();
|
||||
if (!hole) {
|
||||
return;
|
||||
}
|
||||
[[maybe_unused]] QSignalBlocker blocker(ui->HoleType);
|
||||
if (hole->Threaded.getValue()) {
|
||||
if (hole->ModelThread.getValue()) {
|
||||
ui->HoleType->setCurrentIndex(ModeledThread);
|
||||
} else {
|
||||
ui->HoleType->setCurrentIndex(TapDrill);
|
||||
}
|
||||
} else {
|
||||
ui->HoleType->setCurrentIndex(Clearance);
|
||||
}
|
||||
}
|
||||
|
||||
void TaskHoleParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
{
|
||||
Q_UNUSED(msg)
|
||||
@@ -922,7 +925,12 @@ void TaskHoleParameters::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||
|
||||
bool TaskHoleParameters::getThreaded() const
|
||||
{
|
||||
return ui->Threaded->isChecked();
|
||||
return ui->HoleType->currentIndex() != Clearance;
|
||||
}
|
||||
|
||||
bool TaskHoleParameters::getModelThread() const
|
||||
{
|
||||
return ui->HoleType->currentIndex() == ModeledThread;
|
||||
}
|
||||
|
||||
long TaskHoleParameters::getThreadType() const
|
||||
@@ -1047,11 +1055,6 @@ double TaskHoleParameters::getCustomThreadClearance() const
|
||||
return ui->CustomThreadClearance->value().getValue();
|
||||
}
|
||||
|
||||
bool TaskHoleParameters::getModelThread() const
|
||||
{
|
||||
return ui->ModelThread->isChecked();
|
||||
}
|
||||
|
||||
long TaskHoleParameters::getThreadDepthType() const
|
||||
{
|
||||
return ui->ThreadDepthType->currentIndex();
|
||||
|
||||
Reference in New Issue
Block a user