]> Creatis software - clitk.git/blobdiff - vv/vvToolStructureSetManager.cxx
Delete widget first, the image data after
[clitk.git] / vv / vvToolStructureSetManager.cxx
index 4f9fedd928bddc787358e0d4aa407d4e2b696dd1..c4f36033f9e1d09390560215edb3ded128d2fbbe 100644 (file)
@@ -69,7 +69,7 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent,
   mIsAllVisibleEnabled = false;
   mNumberOfVisibleROI = 0;
   mNumberOfVisibleContourROI = 0;
-  mDefaultLUTColor = vtkLookupTable::New();
+  mDefaultLUTColor = vtkSmartPointer<vtkLookupTable>::New();
   for(int i=0; i<mDefaultLUTColor->GetNumberOfTableValues(); i++) {
     double r = (rand()/(RAND_MAX+1.0));
     double v = (rand()/(RAND_MAX+1.0));
@@ -100,13 +100,13 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent,
 vvToolStructureSetManager::~vvToolStructureSetManager()
 {
   m_NumberOfTool--;
-  // DD(mStructureSetsList.size());
-  // DD(mStructureSetActorsList.size());
-  for(uint i=0; i<mStructureSetsList.size();i++) {
-    //    DD(i);
-    delete mStructureSetsList[i];
+
+  std::map<clitk::DicomRT_ROI::Pointer, QTreeWidgetItem *>::iterator it;
+  for (it = mMapROIToTreeWidget.begin(); it!=mMapROIToTreeWidget.end(); it++)
+    delete it->second;
+  for(unsigned int i=0; i< mStructureSetActorsList.size(); i++)
     delete mStructureSetActorsList[i];
-  }
+
 }
 //------------------------------------------------------------------------------
 
@@ -115,10 +115,10 @@ vvToolStructureSetManager::~vvToolStructureSetManager()
 // STATIC
 void vvToolStructureSetManager::Initialize() {
   SetToolName("ROIManager");
-  SetToolMenuName("Display ROI");
+  SetToolMenuName("Display ROI (binary image)");
   SetToolIconFilename(":/common/icons/tool-roi.png");
-  SetToolTip("Display ROI from label image.");
-  SetToolExperimental(true);
+  SetToolTip("Display ROI from a binary image.");
+  SetToolExperimental(false);
 }
 //------------------------------------------------------------------------------
 
@@ -196,7 +196,7 @@ void vvToolStructureSetManager::AddRoiInTreeWidget(clitk::DicomRT_ROI * roi, QTr
 //------------------------------------------------------------------------------
 void vvToolStructureSetManager::UpdateStructureSetInTreeWidget(int index, clitk::DicomRT_StructureSet * s) {
   // Insert ROI
-  const std::vector<clitk::DicomRT_ROI*> & rois = s->GetListOfROI();
+  const std::vector<clitk::DicomRT_ROI::Pointer> & rois = s->GetListOfROI();
   for(unsigned int i=0; i<rois.size(); i++) {
     if (mMapROIToTreeWidget.find(rois[i]) == mMapROIToTreeWidget.end())
       AddRoiInTreeWidget(rois[i], mTree); // replace mTree with ss if several SS
@@ -229,7 +229,7 @@ void vvToolStructureSetManager::OpenBinaryImage()
   int index;
   if (mCurrentStructureSet == NULL) {
     if (mStructureSetsList.size() == 0) { // Create a default SS
-      clitk::DicomRT_StructureSet * mStructureSet = new clitk::DicomRT_StructureSet;
+      clitk::DicomRT_StructureSet::Pointer mStructureSet = clitk::DicomRT_StructureSet::New();
       index = AddStructureSet(mStructureSet);
     }
     else { // Get first SS
@@ -252,24 +252,23 @@ void vvToolStructureSetManager::OpenBinaryImage()
   for(int i=0; i<filename.size(); i++) {
     // Open Image
     QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-    vvImageReader * mReader = new vvImageReader;
+    vvImageReader mReader;
     std::vector<std::string> filenames;
     filenames.push_back(filename[i].toStdString());
-    mReader->SetInputFilenames(filenames);
-    mReader->Update(IMAGE);
+    mReader.SetInputFilenames(filenames);
+    mReader.Update(IMAGE);
     QApplication::restoreOverrideCursor();
 
-    if (mReader->GetLastError().size() != 0) {
+    if (mReader.GetLastError().size() != 0) {
       std::cerr << "Error while reading " << filename[i].toStdString() << std::endl;
       QString error = "Cannot open file \n";
-      error += mReader->GetLastError().c_str();
+      error += mReader.GetLastError().c_str();
       QMessageBox::information(this,tr("Reading problem"),error);
-      delete mReader;
       return;
     }
-    vvImage::Pointer binaryImage = mReader->GetOutput();
+    vvImage::Pointer binaryImage = mReader.GetOutput();
     AddImage(binaryImage, filename[i].toStdString(), mBackgroundValueSpinBox->value());
-    delete mReader;
+    mOpenedBinaryImage.push_back(binaryImage);
   }
   UpdateImage();
 }
@@ -300,7 +299,7 @@ void vvToolStructureSetManager::AddImage(vvImage * binaryImage, std::string file
   int index;
   if (mCurrentStructureSet == NULL) {
     if (mStructureSetsList.size() == 0) { // Create a default SS
-      clitk::DicomRT_StructureSet * mStructureSet = new clitk::DicomRT_StructureSet;
+      clitk::DicomRT_StructureSet::Pointer mStructureSet = clitk::DicomRT_StructureSet::New();
       index = AddStructureSet(mStructureSet);
     }
     else { // Get first SS
@@ -370,7 +369,6 @@ bool vvToolStructureSetManager::close()
 //------------------------------------------------------------------------------
 void vvToolStructureSetManager::closeEvent(QCloseEvent *event) 
 {
-  // DD("vvToolStructureSetManager::closeEvent()");
   std::vector<vvSlicerManager*>::iterator iter = std::find(mListOfInputs.begin(), mListOfInputs.end(), mCurrentSlicerManager);
   if (iter != mListOfInputs.end()) mListOfInputs.erase(iter);
   
@@ -382,7 +380,6 @@ void vvToolStructureSetManager::closeEvent(QCloseEvent *event)
   if (mCurrentSlicerManager != 0) mCurrentSlicerManager->Render();
   if (mCurrentStructureSetActor) {
     for(int i=0; i<mCurrentStructureSetActor->GetNumberOfROIs(); i++) {
-      // DD(i);
       mCurrentStructureSetActor->GetROIList()[i]->SetVisible(false);
       mCurrentStructureSetActor->GetROIList()[i]->SetContourVisible(false);
       delete mCurrentStructureSetActor->GetROIList()[i];
@@ -587,19 +584,15 @@ void vvToolStructureSetManager::ChangeContourWidth(int n) {
 //------------------------------------------------------------------------------
 void vvToolStructureSetManager::ReloadCurrentROI() {
   // Reload image
-  vvImageReader * mReader = new vvImageReader;
-  mReader->SetInputFilename(mCurrentROI->GetFilename());
-  mReader->Update(IMAGE);
-  if (mReader->GetLastError() != "") {
-    QMessageBox::information(mMainWindowBase, tr("Sorry, error. Could not reload"), mReader->GetLastError().c_str());
+  vvImageReader mReader;
+  mReader.SetInputFilename(mCurrentROI->GetFilename());
+  mReader.Update(IMAGE);
+  if (mReader.GetLastError() != "") {
+    QMessageBox::information(mMainWindowBase, tr("Sorry, error. Could not reload"), mReader.GetLastError().c_str());
     return;
   }
-  //  delete mCurrentROI->GetImage();
-  // DD(mCurrentROI->GetImage()->GetFirstVTKImageData()->GetDataReleased());
-  //   DD(mCurrentROI->GetImage()->GetFirstVTKImageData()->GetReferenceCount());
   mCurrentROI->GetImage()->GetFirstVTKImageData()->ReleaseData();
-  // DD(mCurrentROI->GetImage()->GetFirstVTKImageData()->GetDataReleased());
-  mCurrentROI->SetImage(mReader->GetOutput());
+  mCurrentROI->SetImage(mReader.GetOutput());
   
   // Update visu"
   mCurrentROIActor->UpdateImage();