PartDesign/Gui: make Transformed ViewProviders use common code with other

This commit is contained in:
Alexander Golubev 2015-07-31 14:00:14 +03:00 committed by Stefan Tröger
parent 9cba6c48ea
commit 1b1bd5f17e
11 changed files with 24 additions and 185 deletions

View File

@ -28,39 +28,11 @@
#include "ViewProviderLinearPattern.h"
#include "TaskLinearPatternParameters.h"
#include <Mod/PartDesign/App/FeatureLinearPattern.h>
#include <Mod/Sketcher/App/SketchObject.h>
#include <Gui/Control.h>
#include <Gui/Command.h>
#include <Gui/Application.h>
using namespace PartDesignGui;
PROPERTY_SOURCE(PartDesignGui::ViewProviderLinearPattern,PartDesignGui::ViewProviderTransformed)
bool ViewProviderLinearPattern::setEdit(int ModNum)
{
ViewProviderTransformed::setEdit(ModNum);
if (ModNum == ViewProvider::Default ) {
TaskDlgLinearPatternParameters *linearpatternDlg = NULL;
if (checkDlgOpen(linearpatternDlg)) {
// always change to PartDesign WB, remember where we come from
oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench");
// start the edit dialog
if (linearpatternDlg)
Gui::Control().showDialog(linearpatternDlg);
else
Gui::Control().showDialog(new TaskDlgLinearPatternParameters(this));
return true;
} else {
return false;
}
}
else {
return ViewProviderPart::setEdit(ModNum);
}
TaskDlgFeatureParameters *ViewProviderLinearPattern::getEditDialog() {
return new TaskDlgLinearPatternParameters (this);
}

View File

@ -37,7 +37,8 @@ public:
sPixmap = "PartDesign_LinearPattern.svg"; }
protected:
virtual bool setEdit(int ModNum);
/// Returns a newly create dialog for the part to be placed in the task view
virtual TaskDlgFeatureParameters *getEditDialog();
};

View File

@ -28,39 +28,11 @@
#include "ViewProviderMirrored.h"
#include "TaskMirroredParameters.h"
#include <Mod/PartDesign/App/FeatureMirrored.h>
#include <Mod/Sketcher/App/SketchObject.h>
#include <Gui/Control.h>
#include <Gui/Command.h>
#include <Gui/Application.h>
using namespace PartDesignGui;
PROPERTY_SOURCE(PartDesignGui::ViewProviderMirrored,PartDesignGui::ViewProviderTransformed)
bool ViewProviderMirrored::setEdit(int ModNum)
{
ViewProviderTransformed::setEdit(ModNum);
if (ModNum == ViewProvider::Default ) {
TaskDlgMirroredParameters *mirroredDlg = NULL;
if (checkDlgOpen(mirroredDlg)) {
// always change to PartDesign WB, remember where we come from
oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench");
// start the edit dialog
if (mirroredDlg)
Gui::Control().showDialog(mirroredDlg);
else
Gui::Control().showDialog(new TaskDlgMirroredParameters(this));
return true;
} else {
return false;
}
}
else {
return ViewProviderPart::setEdit(ModNum);
}
TaskDlgFeatureParameters *ViewProviderMirrored::getEditDialog() {
return new TaskDlgMirroredParameters (this);
}

View File

@ -38,7 +38,8 @@ public:
}
protected:
virtual bool setEdit(int ModNum);
/// Returns a newly create dialog for the part to be placed in the task view
virtual TaskDlgFeatureParameters *getEditDialog();
};

View File

@ -29,40 +29,14 @@
#include "ViewProviderMultiTransform.h"
#include "TaskMultiTransformParameters.h"
#include <Mod/PartDesign/App/FeatureMultiTransform.h>
#include <Mod/Sketcher/App/SketchObject.h>
#include <Gui/Control.h>
#include <Gui/Command.h>
#include <Gui/Application.h>
using namespace PartDesignGui;
PROPERTY_SOURCE(PartDesignGui::ViewProviderMultiTransform,PartDesignGui::ViewProviderTransformed)
bool ViewProviderMultiTransform::setEdit(int ModNum)
{
ViewProviderTransformed::setEdit(ModNum);
if (ModNum == ViewProvider::Default ) {
TaskDlgMultiTransformParameters *multitransformDlg = NULL;
if (checkDlgOpen(multitransformDlg)) {
// always change to PartDesign WB, remember where we come from
oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench");
// start the edit dialog
if (multitransformDlg)
Gui::Control().showDialog(multitransformDlg);
else
Gui::Control().showDialog(new TaskDlgMultiTransformParameters(this));
return true;
} else {
return false;
}
}
else {
return ViewProviderPart::setEdit(ModNum);
}
TaskDlgFeatureParameters *ViewProviderMultiTransform::getEditDialog() {
return new TaskDlgMultiTransformParameters (this);
}
std::vector<App::DocumentObject*> ViewProviderMultiTransform::claimChildren(void) const
@ -80,7 +54,7 @@ bool ViewProviderMultiTransform::onDelete(const std::vector<std::string> &svec)
PartDesign::MultiTransform* pcMultiTransform = static_cast<PartDesign::MultiTransform*>(getObject());
std::vector<App::DocumentObject*> transformFeatures = pcMultiTransform->Transformations.getValues();
// if abort command deleted the object the transformed features must be deleted, too
// if the multitransform object was deleted the transformed features must be deleted, too
for (std::vector<App::DocumentObject*>::const_iterator it = transformFeatures.begin(); it != transformFeatures.end(); ++it)
{
if ((*it) != NULL)

View File

@ -41,7 +41,9 @@ public:
virtual bool onDelete(const std::vector<std::string> &);
protected:
virtual bool setEdit(int ModNum);
/// Returns a newly create dialog for the part to be placed in the task view
virtual TaskDlgFeatureParameters *getEditDialog();
};

View File

@ -28,39 +28,11 @@
#include "ViewProviderPolarPattern.h"
#include "TaskPolarPatternParameters.h"
#include <Mod/PartDesign/App/FeaturePolarPattern.h>
#include <Mod/Sketcher/App/SketchObject.h>
#include <Gui/Control.h>
#include <Gui/Command.h>
#include <Gui/Application.h>
using namespace PartDesignGui;
PROPERTY_SOURCE(PartDesignGui::ViewProviderPolarPattern,PartDesignGui::ViewProviderTransformed)
bool ViewProviderPolarPattern::setEdit(int ModNum)
{
ViewProviderTransformed::setEdit(ModNum);
if (ModNum == ViewProvider::Default ) {
TaskDlgPolarPatternParameters *polarpatternDlg = NULL;
if (checkDlgOpen(polarpatternDlg)) {
// always change to PartDesign WB, remember where we come from
oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench");
// start the edit dialog
if (polarpatternDlg)
Gui::Control().showDialog(polarpatternDlg);
else
Gui::Control().showDialog(new TaskDlgPolarPatternParameters(this));
return true;
} else {
return false;
}
}
else {
return ViewProviderPart::setEdit(ModNum);
}
TaskDlgFeatureParameters *ViewProviderPolarPattern::getEditDialog() {
return new TaskDlgPolarPatternParameters (this);
}

View File

@ -37,7 +37,8 @@ public:
sPixmap = "PartDesign_PolarPattern.svg"; }
protected:
virtual bool setEdit(int ModNum);
/// Returns a newly create dialog for the part to be placed in the task view
virtual TaskDlgFeatureParameters *getEditDialog();
};

View File

@ -28,39 +28,11 @@
#include "ViewProviderScaled.h"
#include "TaskScaledParameters.h"
#include <Mod/PartDesign/App/FeatureScaled.h>
#include <Mod/Sketcher/App/SketchObject.h>
#include <Gui/Control.h>
#include <Gui/Command.h>
#include <Gui/Application.h>
using namespace PartDesignGui;
PROPERTY_SOURCE(PartDesignGui::ViewProviderScaled,PartDesignGui::ViewProviderTransformed)
bool ViewProviderScaled::setEdit(int ModNum)
{
ViewProviderTransformed::setEdit(ModNum);
if (ModNum == ViewProvider::Default ) {
TaskDlgScaledParameters *scaledDlg = NULL;
if (checkDlgOpen(scaledDlg)) {
// always change to PartDesign WB, remember where we come from
oldWb = Gui::Command::assureWorkbench("PartDesignWorkbench");
// start the edit dialog
if (scaledDlg)
Gui::Control().showDialog(scaledDlg);
else
Gui::Control().showDialog(new TaskDlgScaledParameters(this));
return true;
} else {
return false;
}
}
else {
return ViewProviderPart::setEdit(ModNum);
}
TaskDlgFeatureParameters *ViewProviderScaled::getEditDialog() {
return new TaskDlgScaledParameters (this);
}

View File

@ -37,7 +37,8 @@ public:
sPixmap = "PartDesign_Scaled.svg"; }
protected:
virtual bool setEdit(int ModNum);
/// Returns a newly create dialog for the part to be placed in the task view
virtual TaskDlgFeatureParameters *getEditDialog();
};

View File

@ -109,7 +109,8 @@ bool ViewProviderTransformed::setEdit(int ModNum)
pcRoot->addChild(pcRejectedRoot);
recomputeFeature();
return true;
return ViewProvider::setEdit(ModNum);
}
void ViewProviderTransformed::unsetEdit(int ModNum)
@ -136,36 +137,6 @@ bool ViewProviderTransformed::onDelete(const std::vector<std::string> &s)
return ViewProvider::onDelete(s);
}
const bool ViewProviderTransformed::checkDlgOpen(TaskDlgTransformedParameters* transformedDlg) {
// When double-clicking on the item for this feature the
// object unsets and sets its edit mode without closing
// the task panel
Gui::TaskView::TaskDialog *dlg = Gui::Control().activeDialog();
transformedDlg = qobject_cast<TaskDlgTransformedParameters *>(dlg);
if ((transformedDlg != NULL) && (transformedDlg->getTransformedView() != this))
transformedDlg = NULL; // another transformed feature left open its task panel
if ((dlg != NULL) && (transformedDlg == NULL)) {
QMessageBox msgBox;
msgBox.setText(QObject::tr("A dialog is already open in the task panel"));
msgBox.setInformativeText(QObject::tr("Do you want to close this dialog?"));
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::Yes);
int ret = msgBox.exec();
if (ret == QMessageBox::Yes)
Gui::Control().reject();
else
return false;
}
// clear the selection (convenience)
Gui::Selection().clearSelection();
// Continue (usually in virtual method setEdit())
return true;
}
void ViewProviderTransformed::recomputeFeature(void)
{
PartDesign::Transformed* pcTransformed = static_cast<PartDesign::Transformed*>(getObject());