TaskTransformedParameters derives from Gui::DocumentObserver to handle deletion of view provider when clicking Cancel button
This commit is contained in:
parent
bc84e88e31
commit
27c4136f58
|
@ -370,18 +370,18 @@ unsigned TaskLinearPatternParameters::getOccurrences(void) const
|
||||||
return ui->spinOccurrences->value();
|
return ui->spinOccurrences->value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TaskLinearPatternParameters::~TaskLinearPatternParameters()
|
TaskLinearPatternParameters::~TaskLinearPatternParameters()
|
||||||
{
|
{
|
||||||
//hide the parts coordinate system axis for selection
|
//hide the parts coordinate system axis for selection
|
||||||
PartDesign::Body * body = PartDesign::Body::findBodyOf ( getObject() );
|
PartDesign::Body * body = PartDesign::Body::findBodyOf(getObject());
|
||||||
if(body) {
|
if (body) {
|
||||||
try {
|
try {
|
||||||
App::Origin *origin = body->getOrigin();
|
App::Origin *origin = body->getOrigin();
|
||||||
ViewProviderOrigin* vpOrigin;
|
ViewProviderOrigin* vpOrigin;
|
||||||
vpOrigin = static_cast<ViewProviderOrigin*>(Gui::Application::Instance->getViewProvider(origin));
|
vpOrigin = static_cast<ViewProviderOrigin*>(Gui::Application::Instance->getViewProvider(origin));
|
||||||
vpOrigin->resetTemporaryVisibility();
|
vpOrigin->resetTemporaryVisibility();
|
||||||
} catch (const Base::Exception &ex) {
|
}
|
||||||
|
catch (const Base::Exception &ex) {
|
||||||
Base::Console().Error ("%s\n", ex.what () );
|
Base::Console().Error ("%s\n", ex.what () );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,12 @@ TaskTransformedParameters::TaskTransformedParameters(ViewProviderTransformed *Tr
|
||||||
blockUpdate(false)
|
blockUpdate(false)
|
||||||
{
|
{
|
||||||
selectionMode = none;
|
selectionMode = none;
|
||||||
|
|
||||||
|
if (TransformedView) {
|
||||||
|
Gui::Document* doc = TransformedView->getDocument();
|
||||||
|
this->attachDocument(doc);
|
||||||
|
this->enableNotifications(DocumentObserver::Delete);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskTransformedParameters::TaskTransformedParameters(TaskMultiTransformParameters *parentTask)
|
TaskTransformedParameters::TaskTransformedParameters(TaskMultiTransformParameters *parentTask)
|
||||||
|
@ -92,6 +98,12 @@ TaskTransformedParameters::~TaskTransformedParameters()
|
||||||
Gui::Selection().rmvSelectionGate();
|
Gui::Selection().rmvSelectionGate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TaskTransformedParameters::slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj)
|
||||||
|
{
|
||||||
|
if (TransformedView == &Obj)
|
||||||
|
TransformedView = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
bool TaskTransformedParameters::isViewUpdated() const
|
bool TaskTransformedParameters::isViewUpdated() const
|
||||||
{
|
{
|
||||||
return (blockUpdate == false);
|
return (blockUpdate == false);
|
||||||
|
@ -264,17 +276,18 @@ PartDesignGui::ViewProviderTransformed *TaskTransformedParameters::getTopTransfo
|
||||||
}
|
}
|
||||||
|
|
||||||
PartDesign::Transformed *TaskTransformedParameters::getTopTransformedObject() const {
|
PartDesign::Transformed *TaskTransformedParameters::getTopTransformedObject() const {
|
||||||
App::DocumentObject *transform = getTopTransformedView()->getObject();
|
App::DocumentObject *transform = getTopTransformedView()->getObject();
|
||||||
assert (transform->isDerivedFrom(PartDesign::Transformed::getClassTypeId()));
|
assert (transform->isDerivedFrom(PartDesign::Transformed::getClassTypeId()));
|
||||||
return static_cast<PartDesign::Transformed*>(transform);
|
return static_cast<PartDesign::Transformed*>(transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PartDesign::Transformed *TaskTransformedParameters::getObject() const {
|
PartDesign::Transformed *TaskTransformedParameters::getObject() const {
|
||||||
if (insideMultiTransform)
|
if (insideMultiTransform)
|
||||||
return parentTask->getSubFeature();
|
return parentTask->getSubFeature();
|
||||||
else
|
else if (TransformedView)
|
||||||
return static_cast<PartDesign::Transformed*>(TransformedView->getObject());
|
return static_cast<PartDesign::Transformed*>(TransformedView->getObject());
|
||||||
|
else
|
||||||
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Part::Feature *TaskTransformedParameters::getBaseObject() const {
|
Part::Feature *TaskTransformedParameters::getBaseObject() const {
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include <Gui/TaskView/TaskView.h>
|
#include <Gui/TaskView/TaskView.h>
|
||||||
#include <Gui/Selection.h>
|
#include <Gui/Selection.h>
|
||||||
|
#include <Gui/DocumentObserver.h>
|
||||||
|
|
||||||
#include "TaskFeatureParameters.h"
|
#include "TaskFeatureParameters.h"
|
||||||
#include "TaskTransformedMessages.h"
|
#include "TaskTransformedMessages.h"
|
||||||
|
@ -114,7 +115,9 @@ private:
|
||||||
Because in the second case there is no ViewProvider, some special methods are required to
|
Because in the second case there is no ViewProvider, some special methods are required to
|
||||||
access the underlying FeatureTransformed object in two different ways.
|
access the underlying FeatureTransformed object in two different ways.
|
||||||
**/
|
**/
|
||||||
class TaskTransformedParameters : public Gui::TaskView::TaskBox, public Gui::SelectionObserver
|
class TaskTransformedParameters : public Gui::TaskView::TaskBox,
|
||||||
|
public Gui::SelectionObserver,
|
||||||
|
public Gui::DocumentObserver
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
@ -184,6 +187,8 @@ protected:
|
||||||
int getUpdateViewTimeout() const;
|
int getUpdateViewTimeout() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
/** Notifies when the object is about to be removed. */
|
||||||
|
virtual void slotDeletedObject(const Gui::ViewProviderDocumentObject& Obj);
|
||||||
virtual void changeEvent(QEvent *e) = 0;
|
virtual void changeEvent(QEvent *e) = 0;
|
||||||
virtual void onSelectionChanged(const Gui::SelectionChanges& msg) = 0;
|
virtual void onSelectionChanged(const Gui::SelectionChanges& msg) = 0;
|
||||||
virtual void clearButtons()=0;
|
virtual void clearButtons()=0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user