X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvToolStructureSetManager.cxx;h=2d50d8a6d0b8836020bf196012d8fed2220baf72;hb=ff9a70c82c824ac0cbd297d65761100737f09b8e;hp=257f57e42578bae7471f79831c9dc791023cf2e7;hpb=f66c3f22b18229b8a3540c4437886fac388ec8a3;p=clitk.git diff --git a/vv/vvToolStructureSetManager.cxx b/vv/vvToolStructureSetManager.cxx index 257f57e..2d50d8a 100644 --- a/vv/vvToolStructureSetManager.cxx +++ b/vv/vvToolStructureSetManager.cxx @@ -69,8 +69,8 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, mIsAllVisibleEnabled = false; mNumberOfVisibleROI = 0; mNumberOfVisibleContourROI = 0; - mDefaultLUTColor = vtkLookupTable::New(); - for(unsigned int i=0; iGetNumberOfTableValues(); i++) { + mDefaultLUTColor = vtkSmartPointer::New(); + for(int i=0; iGetNumberOfTableValues(); i++) { double r = (rand()/(RAND_MAX+1.0)); double v = (rand()/(RAND_MAX+1.0)); double b = (rand()/(RAND_MAX+1.0)); @@ -86,7 +86,7 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, } else { MustOpenDialogWhenCreated = false; - buttonBox->setEnabled(true); + mMainButtonBox->setEnabled(true); mCurrentSlicerManager = current; mCurrentImage = mCurrentSlicerManager->GetImage(); mToolWidget->setEnabled(true); @@ -99,6 +99,7 @@ vvToolStructureSetManager::vvToolStructureSetManager(vvMainWindowBase * parent, //------------------------------------------------------------------------------ vvToolStructureSetManager::~vvToolStructureSetManager() { + disconnect(mTree, SIGNAL(itemSelectionChanged()), this, SLOT(SelectedItemChangedInTree())); m_NumberOfTool--; } //------------------------------------------------------------------------------ @@ -108,10 +109,10 @@ vvToolStructureSetManager::~vvToolStructureSetManager() // STATIC void vvToolStructureSetManager::Initialize() { SetToolName("ROIManager"); - SetToolMenuName("Display ROI"); - SetToolIconFilename(":/common/icons/lung-overlay.png"); - SetToolTip("Display ROI from label image."); - SetToolExperimental(true); + SetToolMenuName("Display ROI (binary image)"); + SetToolIconFilename(":/common/icons/tool-roi.png"); + SetToolTip("Display ROI from a binary image."); + SetToolExperimental(false); } //------------------------------------------------------------------------------ @@ -172,7 +173,8 @@ void vvToolStructureSetManager::Open(int type) { //------------------------------------------------------------------------------ void vvToolStructureSetManager::AddRoiInTreeWidget(clitk::DicomRT_ROI * roi, QTreeWidget * ww) { - QTreeWidgetItem * w = new QTreeWidgetItem(ww); + mTreeWidgetList.push_back(QSharedPointer(new QTreeWidgetItem(ww))); + QTreeWidgetItem * w = mTreeWidgetList.back().data(); w->setText(0, QString("%1").arg(roi->GetROINumber())); w->setText(1, QString("%1").arg(roi->GetName().c_str())); QBrush brush(QColor(roi->GetDisplayColor()[0]*255, roi->GetDisplayColor()[1]*255, roi->GetDisplayColor()[2]*255)); @@ -189,7 +191,7 @@ void vvToolStructureSetManager::AddRoiInTreeWidget(clitk::DicomRT_ROI * roi, QTr //------------------------------------------------------------------------------ void vvToolStructureSetManager::UpdateStructureSetInTreeWidget(int index, clitk::DicomRT_StructureSet * s) { // Insert ROI - const std::vector & rois = s->GetListOfROI(); + const std::vector & rois = s->GetListOfROI(); for(unsigned int i=0; i mStructureSetActor(new vvStructureSetActor); + mStructureSetActor->SetStructureSet(mStructureSet); mStructureSetActor->SetSlicerManager(mCurrentSlicerManager); // Insert in lists and get index @@ -220,7 +224,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 @@ -230,7 +234,7 @@ void vvToolStructureSetManager::OpenBinaryImage() index = mCurrentStructureSetIndex; } mCurrentStructureSet = mStructureSetsList[index]; - mCurrentStructureSetActor = mStructureSetActorsList[index]; + mCurrentStructureSetActor = mStructureSetActorsList[index].data(); mCurrentStructureSetIndex = index; // Open images QString Extensions = "Images files ( *.mhd *.hdr *.his)"; @@ -243,23 +247,23 @@ void vvToolStructureSetManager::OpenBinaryImage() for(int i=0; i filenames; filenames.push_back(filename[i].toStdString()); - mReader->SetInputFilenames(filenames); - mReader->Update(IMAGE); + reader->SetInputFilenames(filenames); + reader->Update(IMAGE); QApplication::restoreOverrideCursor(); - if (mReader->GetLastError().size() != 0) { + if (reader->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 += reader->GetLastError().c_str(); QMessageBox::information(this,tr("Reading problem"),error); - delete mReader; return; } - vvImage::Pointer binaryImage = mReader->GetOutput(); + vvImage::Pointer binaryImage = reader->GetOutput(); AddImage(binaryImage, filename[i].toStdString(), mBackgroundValueSpinBox->value()); + mOpenedBinaryImage.push_back(binaryImage); } UpdateImage(); } @@ -275,7 +279,7 @@ void vvToolStructureSetManager::UpdateImage() for(unsigned int i=0; iGetROIActor(mLoadedROIIndex[i])->Update(); } - for(int i=0; iNumberOfSlicers(); i++) { + for(int i=0; iGetNumberOfSlicers(); i++) { mCurrentSlicerManager->GetSlicer(i)->Render(); } } @@ -283,13 +287,14 @@ void vvToolStructureSetManager::UpdateImage() //------------------------------------------------------------------------------ -void vvToolStructureSetManager::AddImage(vvImage::Pointer binaryImage, std::string filename, double BG, bool m_modeBG) +void vvToolStructureSetManager::AddImage(vvImage * binaryImage, std::string filename, + double BG, bool m_modeBG) { // Check current structure set 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 @@ -299,7 +304,7 @@ void vvToolStructureSetManager::AddImage(vvImage::Pointer binaryImage, std::stri index = mCurrentStructureSetIndex; } mCurrentStructureSet = mStructureSetsList[index]; - mCurrentStructureSetActor = mStructureSetActorsList[index]; + mCurrentStructureSetActor = mStructureSetActorsList[index].data(); mCurrentStructureSetIndex = index; // Check Dimension @@ -359,7 +364,6 @@ bool vvToolStructureSetManager::close() //------------------------------------------------------------------------------ void vvToolStructureSetManager::closeEvent(QCloseEvent *event) { - // DD("vvToolStructureSetManager::closeEvent()"); std::vector::iterator iter = std::find(mListOfInputs.begin(), mListOfInputs.end(), mCurrentSlicerManager); if (iter != mListOfInputs.end()) mListOfInputs.erase(iter); @@ -371,7 +375,6 @@ void vvToolStructureSetManager::closeEvent(QCloseEvent *event) if (mCurrentSlicerManager != 0) mCurrentSlicerManager->Render(); if (mCurrentStructureSetActor) { for(int i=0; iGetNumberOfROIs(); i++) { - // DD(i); mCurrentStructureSetActor->GetROIList()[i]->SetVisible(false); mCurrentStructureSetActor->GetROIList()[i]->SetContourVisible(false); delete mCurrentStructureSetActor->GetROIList()[i]; @@ -576,19 +579,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::Pointer reader = vvImageReader::New(); + reader->SetInputFilename(mCurrentROI->GetFilename()); + reader->Update(IMAGE); + if (reader->GetLastError() != "") { + QMessageBox::information(mMainWindowBase, tr("Sorry, error. Could not reload"), reader->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(reader->GetOutput()); // Update visu" mCurrentROIActor->UpdateImage(); @@ -600,8 +599,6 @@ void vvToolStructureSetManager::ReloadCurrentROI() { //------------------------------------------------------------------------------ void vvToolStructureSetManager::CheckInputList(std::vector & l, int & index) { - DD("TODO CheckInputList"); - for(unsigned int i=0; i::iterator iter = std::find(mListOfInputs.begin(), mListOfInputs.end(), l[i]); if (iter != mListOfInputs.end()) { @@ -617,46 +614,22 @@ void vvToolStructureSetManager::CheckInputList(std::vector & l //------------------------------------------------------------------------------ // STATIC -vvToolStructureSetManager * vvToolStructureSetManager::AddImage(vvSlicerManager * m, vvImage::Pointer image, double BG, bool m_modeBG) +vvToolStructureSetManager * vvToolStructureSetManager::AddImage(vvSlicerManager * m, std::string name, vvImage::Pointer image, double BG, bool m_modeBG) { - // DD("static AddImage"); - //DD(mListOfInputs.size()); - + // If the tool is open for this vvSlicerManager, use it and return if (mListOfOpenTool[m]) { - DD("found"); vvToolStructureSetManager * tool = mListOfOpenTool[m]; - tool->AddImage(image, "bidon.mhd", BG, m_modeBG); + tool->AddImage(image, name, BG, m_modeBG); tool->UpdateImage(); - // tool->show(); return tool; } - else { - DD("not found"); - } - std::vector::iterator iter = - std::find(mListOfInputs.begin(), mListOfInputs.end(), m); - if (iter != mListOfInputs.end()) { - DD("found"); - DD("TODO"); - - } - else { - DD("not found"); - - // mMainWindowBase instead of NULL, should be static ? - - vvToolStructureSetManager * tool = new vvToolStructureSetManager - (CREATOR(vvToolStructureSetManager)->GetMainWindow(), Qt::Dialog, m); - - // WARNING : load list of image and selec -> to change to force mCurrentSlicerManager - - // tool->InputIsSelected(); - tool->AddImage(image, "bidon.mhd", BG, m_modeBG); - tool->UpdateImage(); - tool->show(); - return tool; - } - return NULL; + // If the tool is not open, create it + vvToolStructureSetManager * tool = new vvToolStructureSetManager + (CREATOR(vvToolStructureSetManager)->GetMainWindow(), Qt::Dialog, m); + tool->AddImage(image, name, BG, m_modeBG); + tool->UpdateImage(); + tool->show(); + return tool; } //------------------------------------------------------------------------------