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