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();