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.
This commit is contained in:
@@ -372,17 +372,17 @@ TaskLinearPatternParameters::~TaskLinearPatternParameters()
|
||||
}
|
||||
}
|
||||
|
||||
void TaskLinearPatternParameters::apply()
|
||||
void TaskLinearPatternParameters::doApply()
|
||||
{
|
||||
std::vector<std::string> 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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -192,8 +192,14 @@ void TaskMirroredParameters::getMirrorPlane(App::DocumentObject*& obj, std::vect
|
||||
sub = lnk.getSubValues();
|
||||
}
|
||||
|
||||
void TaskMirroredParameters::apply()
|
||||
void TaskMirroredParameters::doApply()
|
||||
{
|
||||
std::vector<std::string> 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<TaskMirroredParameters*>(parameter);
|
||||
std::vector<std::string> 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"
|
||||
|
||||
@@ -53,10 +53,6 @@ public:
|
||||
|
||||
~TaskMirroredParameters() override;
|
||||
|
||||
void getMirrorPlane(App::DocumentObject*& obj, std::vector<std::string>& 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<std::string>& 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
|
||||
|
||||
@@ -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<QLayout*>(QString(), Qt::FindDirectChildrenOnly));
|
||||
ui->subFeatureWidget->setUpdatesEnabled(true);
|
||||
|
||||
|
||||
exitSelectionMode();
|
||||
delete subTask;
|
||||
subTask = nullptr;
|
||||
}
|
||||
@@ -450,14 +450,19 @@ void TaskMultiTransformParameters::onUpdateView(bool on)
|
||||
}
|
||||
}
|
||||
|
||||
const std::vector<App::DocumentObject*> TaskMultiTransformParameters::getTransformFeatures() const
|
||||
{
|
||||
PartDesign::MultiTransform* pcMultiTransform = static_cast<PartDesign::MultiTransform*>(TransformedView->getObject());
|
||||
return pcMultiTransform->Transformations.getValues();
|
||||
}
|
||||
|
||||
void TaskMultiTransformParameters::apply()
|
||||
void TaskMultiTransformParameters::doApply()
|
||||
{
|
||||
PartDesign::MultiTransform* pcMultiTransform = static_cast<PartDesign::MultiTransform*>(getObject());
|
||||
std::vector<App::DocumentObject*> 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<TaskMultiTransformParameters*>(parameter);
|
||||
std::vector<App::DocumentObject*> 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"
|
||||
|
||||
@@ -54,15 +54,11 @@ public:
|
||||
explicit TaskMultiTransformParameters(ViewProviderTransformed *TransformedView,QWidget *parent = nullptr);
|
||||
~TaskMultiTransformParameters() override;
|
||||
|
||||
const std::vector<App::DocumentObject*> 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();
|
||||
};
|
||||
|
||||
@@ -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<std::string> 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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#endif
|
||||
|
||||
#include <App/DocumentObject.h>
|
||||
#include <App/Document.h>
|
||||
#include <Base/Console.h>
|
||||
#include <Gui/Command.h>
|
||||
#include <Gui/Selection.h>
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ();
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user