fix: fix Volume measure selected delete bug
This commit is contained in:
@@ -29,6 +29,9 @@ EllipsoidVolumeAnnotationActor::EllipsoidVolumeAnnotationActor() : DraggableActo
|
||||
mRuler1->SetDistanceName(mRuler1->GetDistanceName()+"1");
|
||||
mRuler2->SetDistanceName(mRuler2->GetDistanceName()+"2");
|
||||
mRuler3->SetDistanceName(mRuler3->GetDistanceName()+"3");
|
||||
mRuler1->SetcontrolledActor(this);
|
||||
mRuler2->SetcontrolledActor(this);
|
||||
mRuler3->SetcontrolledActor(this);
|
||||
mRuler1->AddObserver(MeasureChangedEvent,this,&EllipsoidVolumeAnnotationActor::measureCallback);
|
||||
mRuler2->AddObserver(MeasureChangedEvent,this,&EllipsoidVolumeAnnotationActor::measureCallback);
|
||||
mRuler3->AddObserver(MeasureChangedEvent,this,&EllipsoidVolumeAnnotationActor::measureCallback);
|
||||
@@ -36,6 +39,13 @@ EllipsoidVolumeAnnotationActor::EllipsoidVolumeAnnotationActor() : DraggableActo
|
||||
}
|
||||
|
||||
EllipsoidVolumeAnnotationActor::~EllipsoidVolumeAnnotationActor() {
|
||||
mRuler1->SetcontrolledActor(nullptr);
|
||||
mRuler2->SetcontrolledActor(nullptr);
|
||||
mRuler3->SetcontrolledActor(nullptr);
|
||||
mRuler1->SetRenderer(nullptr);
|
||||
mRuler2->SetRenderer(nullptr);
|
||||
mRuler3->SetRenderer(nullptr);
|
||||
SetRenderer(nullptr);
|
||||
if (mRuler1)mRuler1->Delete();
|
||||
if (mRuler2)mRuler2->Delete();
|
||||
if (mRuler3)mRuler3->Delete();
|
||||
|
||||
@@ -34,6 +34,7 @@ public:
|
||||
|
||||
void ClearRenderingState(vtkRenderer* aRenderer = nullptr);
|
||||
|
||||
virtual bool Removable() { return false; }
|
||||
|
||||
protected:
|
||||
EllipsoidVolumeAnnotationActor();
|
||||
|
||||
@@ -64,6 +64,8 @@ public:
|
||||
virtual void ForceDelete() {};
|
||||
|
||||
virtual bool Valid() { return true; }
|
||||
|
||||
virtual bool Removable() { return true; }
|
||||
|
||||
virtual vtkProp* GetProp(){return nullptr;}
|
||||
|
||||
|
||||
@@ -1181,29 +1181,18 @@ void DICOMImageViewer::AddMeasures(vtkObject *, unsigned long eventid, void *cal
|
||||
void DICOMImageViewer::RemoveMeasures(vtkObject *, unsigned long eventid, void *calldata) {
|
||||
auto p = static_cast<vtkProp *>(calldata);
|
||||
auto da = DraggableActor::SafeDownCast(p);
|
||||
if (da->IsA("ControlPointActor"))
|
||||
while (da->GetcontrolledActor())
|
||||
{
|
||||
auto controlP = ControlPointActor::SafeDownCast(da);
|
||||
if (nullptr == controlP) return;
|
||||
if (nullptr == controlP->GetcontrolledActor()) return;
|
||||
auto m = dynamic_cast<Measure *>(controlP->GetcontrolledActor());
|
||||
if (m == nullptr) return;
|
||||
ClearCurrentSliceMeasure();
|
||||
measureStore->Remove(m);
|
||||
this->InteractorStyle->ClearSelectedProp();
|
||||
ReloadCurrentSliceMeasure();
|
||||
this->Render();
|
||||
da = da->GetcontrolledActor();
|
||||
}
|
||||
else{
|
||||
auto m = dynamic_cast<Measure *>(da);
|
||||
if (m == nullptr) return;
|
||||
if (m == nullptr) return;
|
||||
if (!m->Removable())return;
|
||||
ClearCurrentSliceMeasure();
|
||||
measureStore->Remove(m);
|
||||
this->InteractorStyle->ClearSelectedProp();
|
||||
ReloadCurrentSliceMeasure();
|
||||
this->Render();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void DICOMImageViewer::DeleteSelectedMeasure() {
|
||||
|
||||
Reference in New Issue
Block a user