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:
André Althaus
2024-02-17 14:30:49 +01:00
parent 48d9a8da86
commit fd4bea24b7
12 changed files with 53 additions and 84 deletions

View File

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

View File

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

View File

@@ -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"

View File

@@ -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

View File

@@ -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"

View File

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

View File

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

View File

@@ -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;

View File

@@ -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"

View File

@@ -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

View File

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

View File

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