From cf627f5ce43ffbabc13b3121885afb4ed6d71532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Althaus?= Date: Sat, 17 Feb 2024 14:30:49 +0100 Subject: [PATCH] Fix apply() method not called consistently The python console commands where not consistenly reported because the apply function was not called or not implemented. The function is now called from the base class and also when a subfeature is closed in MultiTransform. Some missing properties are also added. --- .../Gui/TaskLinearPatternParameters.cpp | 6 +-- .../Gui/TaskLinearPatternParameters.h | 3 +- .../PartDesign/Gui/TaskMirroredParameters.cpp | 22 ++++------ .../PartDesign/Gui/TaskMirroredParameters.h | 9 +--- .../Gui/TaskMultiTransformParameters.cpp | 42 +++++++------------ .../Gui/TaskMultiTransformParameters.h | 7 +--- .../Gui/TaskPolarPatternParameters.cpp | 11 ++++- .../Gui/TaskPolarPatternParameters.h | 4 +- .../PartDesign/Gui/TaskScaledParameters.cpp | 16 ++----- src/Mod/PartDesign/Gui/TaskScaledParameters.h | 6 +-- .../Gui/TaskTransformedParameters.cpp | 2 + .../Gui/TaskTransformedParameters.h | 9 +++- 12 files changed, 53 insertions(+), 84 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp index cf5f4d4692..d4c19630af 100644 --- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp @@ -372,17 +372,17 @@ TaskLinearPatternParameters::~TaskLinearPatternParameters() } } -void TaskLinearPatternParameters::apply() +void TaskLinearPatternParameters::doApply() { std::vector directions; App::DocumentObject* obj; getDirection(obj, directions); std::string direction = buildLinkSingleSubPythonStr(obj, directions); - auto tobj = TransformedView->getObject(); + auto tobj = getObject(); FCMD_OBJ_CMD(tobj,"Direction = " << direction); FCMD_OBJ_CMD(tobj,"Reversed = " << getReverse()); - + FCMD_OBJ_CMD(tobj,"Mode = " << getMode()); ui->spinLength->apply(); ui->spinOffset->apply(); ui->spinOccurrences->apply(); diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h index 4425a98933..410a2f0e52 100644 --- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h +++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h @@ -53,8 +53,6 @@ public: TaskLinearPatternParameters(TaskMultiTransformParameters *parentTask, QWidget* parameterWidget); ~TaskLinearPatternParameters() override; - void apply() override; - protected: void onSelectionChanged(const Gui::SelectionChanges& msg) override; @@ -71,6 +69,7 @@ private Q_SLOTS: private: void setupParameterUI(QWidget* widget) override; void retranslateParameterUI(QWidget* widget) override; + void doApply() override; void connectSignals(); void updateUI(); diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp index bd1c5a8266..db694beb3a 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.cpp @@ -192,8 +192,14 @@ void TaskMirroredParameters::getMirrorPlane(App::DocumentObject*& obj, std::vect sub = lnk.getSubValues(); } -void TaskMirroredParameters::apply() +void TaskMirroredParameters::doApply() { + std::vector mirrorPlanes; + App::DocumentObject* obj; + getMirrorPlane(obj, mirrorPlanes); + std::string mirrorPlane = buildLinkSingleSubPythonStr(obj, mirrorPlanes); + + FCMD_OBJ_CMD(getObject(),"MirrorPlane = " << mirrorPlane); } TaskMirroredParameters::~TaskMirroredParameters() @@ -224,19 +230,5 @@ TaskDlgMirroredParameters::TaskDlgMirroredParameters(ViewProviderMirrored *Mirro Content.push_back(parameter); } -//==== calls from the TaskView =============================================================== - -bool TaskDlgMirroredParameters::accept() -{ - TaskMirroredParameters* mirrorParameter = static_cast(parameter); - std::vector mirrorPlanes; - App::DocumentObject* obj; - mirrorParameter->getMirrorPlane(obj, mirrorPlanes); - std::string mirrorPlane = buildLinkSingleSubPythonStr(obj, mirrorPlanes); - - FCMD_OBJ_CMD(vp->getObject(),"MirrorPlane = " << mirrorPlane); - - return TaskDlgTransformedParameters::accept(); -} #include "moc_TaskMirroredParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskMirroredParameters.h b/src/Mod/PartDesign/Gui/TaskMirroredParameters.h index ff354786fa..641fc590df 100644 --- a/src/Mod/PartDesign/Gui/TaskMirroredParameters.h +++ b/src/Mod/PartDesign/Gui/TaskMirroredParameters.h @@ -53,10 +53,6 @@ public: ~TaskMirroredParameters() override; - void getMirrorPlane(App::DocumentObject*& obj, std::vector& sub) const; - - void apply() override; - protected: void onSelectionChanged(const Gui::SelectionChanges& msg) override; @@ -67,7 +63,9 @@ private Q_SLOTS: private: void setupParameterUI(QWidget* widget) override; void retranslateParameterUI(QWidget* widget) override; + void doApply() override; void updateUI(); + void getMirrorPlane(App::DocumentObject*& obj, std::vector& sub) const; private: ComboLinks planeLinks; @@ -82,9 +80,6 @@ class TaskDlgMirroredParameters : public TaskDlgTransformedParameters public: explicit TaskDlgMirroredParameters(ViewProviderMirrored *MirroredView); - - /// is called by the framework if the dialog is accepted (Ok) - bool accept() override; }; } //namespace PartDesignGui diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp index 75ab3f23ab..e903839601 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.cpp @@ -145,6 +145,8 @@ void TaskMultiTransformParameters::closeSubTask() { if (subTask) { ui->buttonOK->hide(); + exitSelectionMode(); + subTask->apply(); // Remove all parameter ui widgets and layout ui->subFeatureWidget->setUpdatesEnabled(false); @@ -152,8 +154,6 @@ void TaskMultiTransformParameters::closeSubTask() qDeleteAll(ui->subFeatureWidget->findChildren(QString(), Qt::FindDirectChildrenOnly)); ui->subFeatureWidget->setUpdatesEnabled(true); - - exitSelectionMode(); delete subTask; subTask = nullptr; } @@ -450,14 +450,19 @@ void TaskMultiTransformParameters::onUpdateView(bool on) } } -const std::vector TaskMultiTransformParameters::getTransformFeatures() const -{ - PartDesign::MultiTransform* pcMultiTransform = static_cast(TransformedView->getObject()); - return pcMultiTransform->Transformations.getValues(); -} - -void TaskMultiTransformParameters::apply() +void TaskMultiTransformParameters::doApply() { + PartDesign::MultiTransform* pcMultiTransform = static_cast(getObject()); + std::vector transformFeatures = pcMultiTransform->Transformations.getValues(); + std::stringstream str; + str << Gui::Command::getObjectCmd(TransformedView->getObject()) << ".Transformations = ["; + for (auto it : transformFeatures) { + if (it) { + str << Gui::Command::getObjectCmd(it) << ","; + } + } + str << "]"; + Gui::Command::runCommand(Gui::Command::Doc,str.str().c_str()); } TaskMultiTransformParameters::~TaskMultiTransformParameters() @@ -484,24 +489,5 @@ TaskDlgMultiTransformParameters::TaskDlgMultiTransformParameters(ViewProviderMul Content.push_back(parameter); } -//==== calls from the TaskView =============================================================== - -bool TaskDlgMultiTransformParameters::accept() -{ - // Set up transformations - TaskMultiTransformParameters* mtParameter = static_cast(parameter); - std::vector transformFeatures = mtParameter->getTransformFeatures(); - std::stringstream str; - str << Gui::Command::getObjectCmd(vp->getObject()) << ".Transformations = ["; - for (auto it : transformFeatures) { - if (it) { - str << Gui::Command::getObjectCmd(it) << ","; - } - } - str << "]"; - Gui::Command::runCommand(Gui::Command::Doc,str.str().c_str()); - - return TaskDlgFeatureParameters::accept (); -} #include "moc_TaskMultiTransformParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h index 6270dcfcdf..feb3730dcb 100644 --- a/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h +++ b/src/Mod/PartDesign/Gui/TaskMultiTransformParameters.h @@ -54,15 +54,11 @@ public: explicit TaskMultiTransformParameters(ViewProviderTransformed *TransformedView,QWidget *parent = nullptr); ~TaskMultiTransformParameters() override; - const std::vector getTransformFeatures() const; - /// Return the currently active subFeature PartDesign::Transformed* getSubFeature() { return subFeature; } - void apply() override; - private Q_SLOTS: /// User finished editing a subFeature void onSubTaskButtonOK(); @@ -82,6 +78,7 @@ private Q_SLOTS: private: void setupParameterUI(QWidget* widget) override; void retranslateParameterUI(QWidget* widget) override; + void doApply() override; /** Notifies when the object is about to be removed. */ void slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj) override; @@ -108,8 +105,6 @@ class TaskDlgMultiTransformParameters : public TaskDlgTransformedParameters public: explicit TaskDlgMultiTransformParameters(ViewProviderMultiTransform *MultiTransformView); - /// is called by the framework if the dialog is accepted (Ok) - bool accept() override; /// is called by the framework if the dialog is rejected (Cancel) // virtual bool reject(); }; diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp index e297023f61..db282a28f4 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.cpp @@ -329,6 +329,11 @@ bool TaskPolarPatternParameters::getReverse() const return ui->checkReverse->isChecked(); } +int TaskPolarPatternParameters::getMode() const +{ + return ui->comboMode->currentIndex(); +} + double TaskPolarPatternParameters::getAngle() const { return ui->polarAngle->value().getValue(); @@ -356,17 +361,19 @@ TaskPolarPatternParameters::~TaskPolarPatternParameters() } } -void TaskPolarPatternParameters::apply() +void TaskPolarPatternParameters::doApply() { - auto tobj = TransformedView->getObject(); std::vector axes; App::DocumentObject* obj; getAxis(obj, axes); std::string axis = buildLinkSingleSubPythonStr(obj, axes); + auto tobj = getObject(); FCMD_OBJ_CMD(tobj,"Axis = " << axis.c_str()); FCMD_OBJ_CMD(tobj,"Reversed = " << getReverse()); + FCMD_OBJ_CMD(tobj,"Mode = " << getMode()); ui->polarAngle->apply(); + ui->angleOffset->apply(); ui->spinOccurrences->apply(); } diff --git a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h index 1d5c8e2e9a..f0fcfc8f53 100644 --- a/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h +++ b/src/Mod/PartDesign/Gui/TaskPolarPatternParameters.h @@ -53,8 +53,6 @@ public: TaskPolarPatternParameters(TaskMultiTransformParameters *parentTask, QWidget* parameterWidget); ~TaskPolarPatternParameters() override; - void apply() override; - protected: void onSelectionChanged(const Gui::SelectionChanges& msg) override; @@ -71,6 +69,7 @@ private Q_SLOTS: private: void setupParameterUI(QWidget* widget) override; void retranslateParameterUI(QWidget* widget) override; + void doApply() override; void connectSignals(); void updateUI(); @@ -81,6 +80,7 @@ private: const std::string getStdAxis() const; const std::string getAxis() const; bool getReverse() const; + int getMode() const; double getAngle() const; unsigned getOccurrences() const; diff --git a/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp b/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp index 19922ad3b6..76fd21239e 100644 --- a/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskScaledParameters.cpp @@ -27,6 +27,7 @@ #endif #include +#include #include #include #include @@ -141,11 +142,9 @@ unsigned TaskScaledParameters::getOccurrences() const return ui->spinOccurrences->value(); } -void TaskScaledParameters::apply() +void TaskScaledParameters::doApply() { - std::string name = TransformedView->getObject()->getNameInDocument(); - - Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Factor = %f",name.c_str(), getFactor()); + FCMD_OBJ_CMD(getObject(),"Factor = " << getFactor()); ui->spinOccurrences->apply(); } @@ -161,14 +160,5 @@ TaskDlgScaledParameters::TaskDlgScaledParameters(ViewProviderScaled *ScaledView) Content.push_back(parameter); } -//==== calls from the TaskView =============================================================== - -bool TaskDlgScaledParameters::accept() -{ - - parameter->apply(); - - return TaskDlgTransformedParameters::accept(); -} #include "moc_TaskScaledParameters.cpp" diff --git a/src/Mod/PartDesign/Gui/TaskScaledParameters.h b/src/Mod/PartDesign/Gui/TaskScaledParameters.h index 49373d895a..1ab7c6ff6f 100644 --- a/src/Mod/PartDesign/Gui/TaskScaledParameters.h +++ b/src/Mod/PartDesign/Gui/TaskScaledParameters.h @@ -51,8 +51,6 @@ public: /// Constructor for task with parent task (MultiTransform mode) TaskScaledParameters(TaskMultiTransformParameters *parentTask, QWidget* parameterWidget); - void apply() override; - private Q_SLOTS: void onFactor(const double f); void onOccurrences(const uint n); @@ -61,6 +59,7 @@ private Q_SLOTS: private: void setupParameterUI(QWidget* widget) override; void retranslateParameterUI(QWidget* widget) override; + void doApply() override; void updateUI(); double getFactor() const; @@ -78,9 +77,6 @@ class TaskDlgScaledParameters : public TaskDlgTransformedParameters public: explicit TaskDlgScaledParameters(ViewProviderScaled *ScaledView); - - /// is called by the framework if the dialog is accepted (Ok) - bool accept() override; }; } //namespace PartDesignGui diff --git a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp index 9d2f4ea0d4..c296a1d4a2 100644 --- a/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskTransformedParameters.cpp @@ -554,6 +554,7 @@ TaskDlgTransformedParameters::TaskDlgTransformedParameters(ViewProviderTransform bool TaskDlgTransformedParameters::accept() { parameter->exitSelectionMode(); + parameter->apply(); return TaskDlgFeatureParameters::accept (); } @@ -562,6 +563,7 @@ bool TaskDlgTransformedParameters::reject() { // ensure that we are not in selection mode parameter->exitSelectionMode(); + return TaskDlgFeatureParameters::reject (); } diff --git a/src/Mod/PartDesign/Gui/TaskTransformedParameters.h b/src/Mod/PartDesign/Gui/TaskTransformedParameters.h index a46dce1216..4ddc5dd79f 100644 --- a/src/Mod/PartDesign/Gui/TaskTransformedParameters.h +++ b/src/Mod/PartDesign/Gui/TaskTransformedParameters.h @@ -131,7 +131,11 @@ public: explicit TaskTransformedParameters(TaskMultiTransformParameters *parentTask); ~TaskTransformedParameters() override; - virtual void apply() = 0; + /// Apply changes for python console + void apply() + { + doApply(); + } /*! * \brief setEnabledTransaction @@ -212,6 +216,9 @@ private: /// Change translation of the parameter UI virtual void retranslateParameterUI(QWidget* widget) = 0; + /// Implementation for apply() + virtual void doApply() = 0; + void addObject(App::DocumentObject*); void removeObject(App::DocumentObject*); void clearButtons();