X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvMainWindow.cxx;h=5c7bbfd76f3ccb531c54b1ae01fe0b0d0358b33e;hb=e2d2096e1a3a4afdad6446bf09d0e05f47d9b7eb;hp=56aa5b1bc6d8b587ed72b3877dae53ecb1901286;hpb=407e3715e0917fcbb1556342f6ac9ac2ead0e476;p=clitk.git diff --git a/vv/vvMainWindow.cxx b/vv/vvMainWindow.cxx index 56aa5b1..5c7bbfd 100644 --- a/vv/vvMainWindow.cxx +++ b/vv/vvMainWindow.cxx @@ -181,8 +181,10 @@ vvMainWindow::vvMainWindow():vvMainWindowBase() contextMenu.addAction(actionAdd_fusion_image); contextActions.push_back(actionAdd_fusion_image); +#ifdef CLITK_EXPERIMENTAL contextMenu.addAction(actionAdd_USSequence_toCT); contextActions.push_back(actionAdd_USSequence_toCT); +#endif contextMenu.addSeparator(); @@ -334,6 +336,7 @@ vvMainWindow::vvMainWindow():vvMainWindowBase() connect(overlayPanel,SIGNAL(FusionPropertyUpdated(int,int,int,double,double, bool)), this,SLOT(SetFusionProperty(int,int,int,double,double, bool))); connect(landmarksPanel,SIGNAL(UpdateRenderWindows()),this,SLOT(UpdateRenderWindows())); + connect(landmarksPanel,SIGNAL(SelectedPointChanged()),this,SLOT(GoToLandmark())); connect(overlayPanel,SIGNAL(FusionSequencePropertyUpdated(int, bool, unsigned int, bool)), this,SLOT(SetFusionSequenceProperty(int, bool,unsigned int, bool))); @@ -955,7 +958,7 @@ void vvMainWindow::LoadImages(std::vector files, vvImageReader::Loa double range[2]; mSlicerManagers.back()->GetImage()->GetFirstVTKImageData()->GetScalarRange(range); if ((range[0] == 0) && (range[1] == 1)) { - presetComboBox->setCurrentIndex(5);// binary + presetComboBox->setCurrentIndex(WL_BINARY);// binary } else { // TODO } @@ -995,6 +998,12 @@ void vvMainWindow::CurrentImageChanged(std::string id) } DataTree->topLevelItem(selected)->setSelected(1); mCurrentSelectedImageId = id; + + landmarksPanel->SetCurrentLandmarks(mSlicerManagers[selected]->GetLandmarks(), + mSlicerManagers[selected]->GetTSlice()); + landmarksPanel->SetCurrentPath(mInputPathName.toStdString()); + landmarksPanel->SetCurrentImage(mSlicerManagers[selected]->GetFileName().c_str()); + emit SelectedImageHasChanged(mSlicerManagers[selected]); } //------------------------------------------------------------------------------ @@ -1135,7 +1144,7 @@ void vvMainWindow::ImageInfoChanged() infoPanel->setTransformation(Get4x4MatrixDoubleAsString(transformation)); landmarksPanel->SetCurrentLandmarks(mSlicerManagers[index]->GetLandmarks(), - mSlicerManagers[index]->GetSlicer(0)->GetImage()->GetVTKImages().size()); + mSlicerManagers[index]->GetTSlice()); landmarksPanel->SetCurrentPath(mInputPathName.toStdString()); landmarksPanel->SetCurrentImage(mSlicerManagers[index]->GetFileName().c_str()); @@ -1147,26 +1156,26 @@ void vvMainWindow::ImageInfoChanged() } } - infoPanel->setFileName(image); - infoPanel->setDimension(dim); - infoPanel->setSizePixel(GetVectorIntAsString(inputSize)); - infoPanel->setSizeMM(GetVectorDoubleAsString(sizeMM)); - infoPanel->setOrigin(GetVectorDoubleAsString(origin)); - infoPanel->setSpacing(GetVectorDoubleAsString(inputSpacing)); - infoPanel->setNPixel(QString::number(NPixel)+" ("+inputSizeInBytes+")"); - - landmarksPanel->SetCurrentLandmarks(mSlicerManagers[index]->GetLandmarks(), - mSlicerManagers[index]->GetSlicer(0)->GetImage()->GetVTKImages().size()); - landmarksPanel->SetCurrentPath(mInputPathName.toStdString()); - landmarksPanel->SetCurrentImage(mSlicerManagers[index]->GetFileName().c_str()); - - overlayPanel->getCurrentImageName(mSlicerManagers[index]->GetFileName().c_str()); - for (int i = 0; i < 4; i++) { - if (DataTree->selectedItems()[0]->data(i+1,Qt::CheckStateRole).toInt() > 0 || i == 3) { - mSlicerManagers[index]->UpdateInfoOnCursorPosition(i); - break; - } - } +// infoPanel->setFileName(image); +// infoPanel->setDimension(dim); +// infoPanel->setSizePixel(GetVectorIntAsString(inputSize)); +// infoPanel->setSizeMM(GetVectorDoubleAsString(sizeMM)); +// infoPanel->setOrigin(GetVectorDoubleAsString(origin)); +// infoPanel->setSpacing(GetVectorDoubleAsString(inputSpacing)); +// infoPanel->setNPixel(QString::number(NPixel)+" ("+inputSizeInBytes+")"); +// +// landmarksPanel->SetCurrentLandmarks(mSlicerManagers[index]->GetLandmarks(), +// mSlicerManagers[index]->GetTSlice()); +// landmarksPanel->SetCurrentPath(mInputPathName.toStdString()); +// landmarksPanel->SetCurrentImage(mSlicerManagers[index]->GetFileName().c_str()); +// +// overlayPanel->getCurrentImageName(mSlicerManagers[index]->GetFileName().c_str()); +// for (int i = 0; i < 4; i++) { +// if (DataTree->selectedItems()[0]->data(i+1,Qt::CheckStateRole).toInt() > 0 || i == 3) { +// mSlicerManagers[index]->UpdateInfoOnCursorPosition(i); +// break; +// } +// } WindowLevelChanged(); slicingPresetComboBox->setCurrentIndex(mSlicerManagers[index]->GetSlicingPreset()); @@ -1581,12 +1590,17 @@ void vvMainWindow::CloseImage(QTreeWidgetItem* item, int column) } if (overlay_type=="fusionSequence") { //removing the overlay sequence in a fusion sequence visualization mode - //TODO: remove the synchronization (transform matrices, etc...) + //reset the transforms + overlayPanel->getFusionSequenceProperty(-1, false, 0, false); - //=> unlink and untie the slicer managers + //unlink and untie the slicer managers RemoveLink(mSlicerManagers[index]->GetId().c_str(), mSlicerManagers[mSlicerManagers[index]->GetFusionSequenceIndexOfLinkedManager()]->GetId().c_str()); mSlicerManagers[index]->SetFusionSequenceInvolvmentCode(-1); mSlicerManagers[mSlicerManagers[index]->GetFusionSequenceIndexOfLinkedManager()]->SetFusionSequenceInvolvmentCode(-1); + for (unsigned i=0 ; i<4 ; i++) { + mSlicerManagers[index]->GetSlicer(i)->SetFusionSequenceCode(-1); + mSlicerManagers[mSlicerManagers[index]->GetFusionSequenceIndexOfLinkedManager()]->GetSlicer(i)->SetFusionSequenceCode(-1); + } } mSlicerManagers[index]->RemoveActor(overlay_type, overlay_index-1); @@ -1622,18 +1636,26 @@ void vvMainWindow::CloseImage(QTreeWidgetItem* item, int column) for (int i = 0; i < index; i++) { Manageriter++; } - linkPanel->removeImage(index); - mSlicerManagers[index]->RemoveActors(); - //if the slicer manager was involved in a fusion sequence visualization... - if ( item->data(1,Qt::UserRole).toString().toStdString() == "fusionSequence" ) { - //TODO - //make sure both SlicerManager exit the FusionSequence visualization mode - //disable the temporal and spatial sync? make sure we reset the spatial transforms to their initial states... + if ( mSlicerManagers[index]->IsInvolvedInFusionSequence() ) { + //reset the transforms + overlayPanel->getFusionSequenceProperty(-1, false, 0, false); + + //unlink and untie the slicer managers + RemoveLink(mSlicerManagers[index]->GetId().c_str(), mSlicerManagers[mSlicerManagers[index]->GetFusionSequenceIndexOfLinkedManager()]->GetId().c_str()); mSlicerManagers[index]->SetFusionSequenceInvolvmentCode(-1); mSlicerManagers[mSlicerManagers[index]->GetFusionSequenceIndexOfLinkedManager()]->SetFusionSequenceInvolvmentCode(-1); + for (unsigned i=0 ; i<4 ; i++) { + mSlicerManagers[index]->GetSlicer(i)->SetFusionSequenceCode(-1); + mSlicerManagers[mSlicerManagers[index]->GetFusionSequenceIndexOfLinkedManager()]->GetSlicer(i)->SetFusionSequenceCode(-1); + } + + //TODO: also remove the image overlaid with the main sequence, as it is becoming invalid... } + linkPanel->removeImage(index); + mSlicerManagers[index]->RemoveActors(); + //remove the slicer manager delete mSlicerManagers[index]; mSlicerManagers.erase(Manageriter); @@ -1775,7 +1797,7 @@ void vvMainWindow::WindowLevelChanged() //------------------------------------------------------------------------------ void vvMainWindow::WindowLevelEdited() { - presetComboBox->setCurrentIndex(6); + presetComboBox->setCurrentIndex(WL_USER); UpdateWindowLevel(); } //------------------------------------------------------------------------------ @@ -1785,7 +1807,7 @@ void vvMainWindow::SetWindowLevel(double w, double l) { windowSpinBox->setValue(w); levelSpinBox->setValue(l); - presetComboBox->setCurrentIndex(6); + presetComboBox->setCurrentIndex(WL_USER); colorMapComboBox->setCurrentIndex(0); UpdateWindowLevel(); } @@ -1795,7 +1817,7 @@ void vvMainWindow::SetWindowLevel(double w, double l) void vvMainWindow::UpdateWindowLevel() { if (DataTree->selectedItems().size()) { - if (presetComboBox->currentIndex() == 7) //For ventilation + if (presetComboBox->currentIndex() == WL_VENTILATION) //For ventilation colorMapComboBox->setCurrentIndex(5); int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]); mSlicerManagers[index]->SetColorWindow(windowSpinBox->value()); @@ -1831,7 +1853,7 @@ void vvMainWindow::SwitchWindowLevel() { int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]); int window = mSlicerManagers[index]->GetColorWindow(); - presetComboBox->setCurrentIndex(6); + presetComboBox->setCurrentIndex(WL_USER); windowSpinBox->setValue(-window); UpdateWindowLevel(); } @@ -1850,7 +1872,7 @@ void vvMainWindow::ApplyWindowLevelToAllImages() continue; mSlicerManagers[i]->SetColorWindow(window); mSlicerManagers[i]->SetColorLevel(level); - mSlicerManagers[i]->SetPreset(6); + mSlicerManagers[i]->SetPreset(WL_USER); mSlicerManagers[i]->Render(); } } @@ -1863,7 +1885,7 @@ void vvMainWindow::ApplyWindowToSetOfImages(double window, unsigned int indexMin if (mSlicerManagers[i] == NULL) continue; mSlicerManagers[i]->SetColorWindow(window); - mSlicerManagers[i]->SetPreset(6); + mSlicerManagers[i]->SetPreset(WL_USER); mSlicerManagers[i]->Render(); } } @@ -1876,7 +1898,7 @@ void vvMainWindow::ApplyLevelToSetOfImages(double level, unsigned int indexMin, if (mSlicerManagers[i] == NULL) continue; mSlicerManagers[i]->SetColorLevel(level); - mSlicerManagers[i]->SetPreset(6); + mSlicerManagers[i]->SetPreset(WL_USER); mSlicerManagers[i]->Render(); } } @@ -2196,7 +2218,15 @@ void vvMainWindow::AddFusionImage(int index, QString file) QMessageBox::information(this,tr("Problem reading Fusion !"),"File doesn't exist!"); } //------------------------------------------------------------------------------ - +//------------------------------------------------------------------------------ +void vvMainWindow::AddLandmarks(int index, std::vector files) +{ + if (!landmarksPanel->LoadFromFile(files)) + QMessageBox::information(this,tr("Problem reading Landmarks !"),"File doesn't exist!"); + + landmarksPanel->SetCurrentPath(mInputPathName.toStdString()); + landmarksPanel->SetCurrentImage(mSlicerManagers[index]->GetFileName().c_str()); +} //------------------------------------------------------------------------------ void vvMainWindow::OpenField() @@ -3374,6 +3404,23 @@ void vvMainWindow::GoToCursor() } //------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ +void vvMainWindow::GoToLandmark() +{ + int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]); + for (int column = 1; column < 5; column++) { + if (DataTree->selectedItems()[0]->data(column,Qt::CheckStateRole).toInt() > 1) { + double* cursorPos = landmarksPanel->GetSelectedPoint(); + mSlicerManagers[index]->GetSlicer(column-1)->SetCurrentPosition( + cursorPos[0],cursorPos[1],cursorPos[2],cursorPos[3]); + mSlicerManagers[index]->UpdateViews(1,column-1); + mSlicerManagers[index]->UpdateLinked(column-1); + break; + } + } +} +//------------------------------------------------------------------------------ + //------------------------------------------------------------------------------ void vvMainWindow::PlayPause() {