#include "vvMeshReader.h"
#include "vvConstants.h"
-#ifdef CLITK_VV_USE_BDCM
-#include <bdcmDicomFilesSelectorDialog.h>
-#endif
-
// ITK include
#include "itkImage.h"
#include "itkImageFileReader.h"
mMenuExperimentalTools = menuExperimental;
mMainWidget = this;
mCurrentTime = -1;
+ mCurrentSelectedImageId = "";
//Init the contextMenu
this->setContextMenuPolicy(Qt::CustomContextMenu);
{
std::vector<std::string> files;
-#ifdef CLITK_VV_USE_BDCM
- bool r = bdcm::OpenDicomFilesSelectorDialog(files,
- "DicomFilesSelectorDialog test",
- 0,0,800,800,1);
-
- if (r) {
- std::cout << "$$$$ main : user clicked 'OK' $$$$"<<std::endl;
- std::cout << "$$$$ selected files : "<<std::endl;
- std::vector<std::string>::iterator i;
- for (i=files.begin(); i!=files.end(); ++i) {
- std::cout << *i << std::endl;
- }
- std::cout << "$$$$ "<<std::endl;
-
- LoadImages(files,DICOM);
- } else {
- std::cout << "$$$$ main : user clicked 'CANCEL' $$$$"<<std::endl;
- }
-#else
std::cout << "dicomSeriesSelector " << std::endl;
if (dicomSeriesSelector->exec() == QDialog::Accepted) {
files = *(dicomSeriesSelector->GetFilenames());
LoadImages(files,DICOM);
}
-#endif
-
}
//------------------------------------------------------------------------------
//open images as 1 or multiples
for (int i = 0; i < fileSize; i++) {
- progress.Update("Opening " + files[i]);
+ progress.SetText("Opening " + files[i]);
progress.SetProgress(i,fileSize);
qApp->processEvents();
this,SLOT(UpdateSliceRange(int,int,int,int,int)));
connect(mSlicerManagers.back(), SIGNAL(UpdateLinkManager(std::string,int,double,double,double,int)),
this,SLOT(UpdateLinkManager(std::string,int,double,double,double,int)));
+ connect(mSlicerManagers.back(), SIGNAL(UpdateLinkedNavigation(std::string,vvSlicerManager*)),
+ this,SLOT(UpdateLinkedNavigation(std::string,vvSlicerManager*)));
connect(mSlicerManagers.back(), SIGNAL(ChangeImageWithIndexOffset(vvSlicerManager*,int,int)),
this,SLOT(ChangeImageWithIndexOffset(vvSlicerManager*,int,int)));
connect(mSlicerManagers.back(),SIGNAL(LandmarkAdded()),landmarksPanel,SLOT(AddPoint()));
UpdateTree();
InitDisplay();
ShowLastImage();
- }
- QApplication::restoreOverrideCursor();
- // Try to guess default WindowLevel
- double range[2];
- mSlicerManagers.back()->GetImage()->GetFirstVTKImageData()->GetScalarRange(range);
- // DD(range[0]);
- // DD(range[1]);
- if ((range[0] == 0) && (range[1] == 1)) {
- presetComboBox->setCurrentIndex(5);// binary
- } else {
- // TODO
+ // Try to guess default WindowLevel
+ double range[2];
+ mSlicerManagers.back()->GetImage()->GetFirstVTKImageData()->GetScalarRange(range);
+ // DD(range[0]);
+ // DD(range[1]);
+ if ((range[0] == 0) && (range[1] == 1)) {
+ presetComboBox->setCurrentIndex(5);// binary
+ } else {
+ // TODO
+ }
}
+ QApplication::restoreOverrideCursor();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvMainWindow::CurrentImageChanged(std::string id)
{
- // DD("CurrentImageChanged");
+ // DD("CurrentImageChanged");
+// DD(id);
+// DD(mCurrentSelectedImageId);
+ if (id == mCurrentSelectedImageId) return; // Do nothing
int selected = 0;
for (int i = 0; i < DataTree->topLevelItemCount(); i++) {
if (DataTree->topLevelItem(i)->data(COLUMN_IMAGE_NAME,Qt::UserRole).toString().toStdString() == id) {
}
DataTree->topLevelItem(selected)->setSelected(1);
- // DD(mSlicerManagers[selected]->GetFileName());
+ // DD(mSlicerManagers[selected]->GetFileName());
+ mCurrentSelectedImageId = id;
emit SelectedImageHasChanged(mSlicerManagers[selected]);
}
//------------------------------------------------------------------------------
inputSpacing.resize(dimension);
inputSize.resize(dimension);
sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsString().c_str();
+ pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsITKString().c_str();
for (int i = 0; i < dimension; i++) {
origin[i] = imageSelected->GetOrigin()[i];
inputSpacing[i] = imageSelected->GetSpacing()[i];
inputSpacing.resize(dimension);
inputSize.resize(dimension);
sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetVF()->GetScalarTypeAsString().c_str();
+ pixelType = mSlicerManagers[index]->GetVF()->GetScalarTypeAsITKString().c_str();
for (int i = 0; i < dimension; i++) {
origin[i] = imageSelected->GetOrigin()[i];
inputSpacing[i] = imageSelected->GetSpacing()[i];
inputSpacing.resize(dimension);
inputSize.resize(dimension);
sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsString().c_str();
+ pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsITKString().c_str();
for (int i = 0; i < dimension; i++) {
origin[i] = imageSelected->GetOrigin()[i];
inputSpacing[i] = imageSelected->GetSpacing()[i];
inputSpacing.resize(dimension);
inputSize.resize(dimension);
sizeMM.resize(dimension);
- pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsString().c_str();
+ pixelType = mSlicerManagers[index]->GetImage()->GetScalarTypeAsITKString().c_str();
for (int i = 0; i < dimension; i++) {
origin[i] = imageSelected->GetOrigin()[i];
inputSpacing[i] = imageSelected->GetSpacing()[i];
this,SLOT(UpdateSliceRange(int,int,int,int,int)));
connect(mSlicerManagers.back(),SIGNAL(UpdateLinkManager(std::string,int,double,double,double,int)),
this,SLOT(UpdateLinkManager(std::string,int,double,double,double,int)));
+ connect(mSlicerManagers.back(), SIGNAL(UpdateLinkedNavigation(std::string,vvSlicerManager*)),
+ this,SLOT(UpdateLinkedNavigation(std::string,vvSlicerManager*)));
connect(mSlicerManagers.back(),SIGNAL(LandmarkAdded()),landmarksPanel,SLOT(AddPoint()));
UpdateTree();
qApp->processEvents();
}
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+void vvMainWindow::UpdateLinkedNavigation(std::string id, vvSlicerManager * sm)
+{
+ for (unsigned int i = 0; i < mSlicerManagers.size(); i++) {
+ if (id == mSlicerManagers[i]->GetId()) {
+ mSlicerManagers[i]->UpdateLinkedNavigation(sm->GetSlicer(0));
+ }
+ }
+}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::ShowContextMenu(QPoint point)
{
QMessageBox::information(this,tr("Problem reading image !"),error);
}
}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvMainWindow::AddROI(int index, QString file)
+{
+ DD("AddImageAndROI");
+ /*
+ // Get slice manager
+
+ // Load image
+
+ vvImageReader * mReader = new vvImageReader;
+ mReader->SetInputFilename(filename.toStdString());
+ mReader->Update(IMAGE);
+ if (mReader->GetLastError().size() != 0) {
+ std::cerr << "Error while reading " << filename.toStdString() << std::endl;
+ QString error = "Cannot open file \n";
+ error += mReader->GetLastError().c_str();
+ QMessageBox::information(this,tr("Reading problem"),error);
+ delete mReader;
+ return;
+ }
+ vvImage::Pointer roi = mReader->GetOutput();
+
+ // Create roi in new tool
+ vvToolStructureSetManager::AddImage(mCurrentSlicerManager, roi);
+*/
+}
+//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
void vvMainWindow::AddFusionImage()
{
int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
if (value == NOVerticalSlider->value()) return;
else value = NOVerticalSlider->value();
// int value = NOVerticalSlider->value();
- for (unsigned int i = 0; i < mSlicerManagers.size(); i++)
- {
- if (DataTree->topLevelItem(i)->data(COLUMN_UL_VIEW,Qt::CheckStateRole).toInt() > 1)
- {
- if (mSlicerManagers[i]->GetSlicer(0)->GetSlice() != value) {
- mSlicerManagers[i]->GetSlicer(0)->SetSlice(value);
- mSlicerManagers[i]->VerticalSliderHasChanged(0, value);
-
- // If nor Update/Render -> slider not work
- // only render = ok navigation, but for contour Update needed but slower ?
-
- mSlicerManagers[i]->UpdateSlice(0); // <-- DS add this. Not too much update ? YES. but needed for ImageContour ...
- //mSlicerManagers[i]->GetSlicer(0)->Render(); // <-- DS add this, needed for contour, seems ok ? not too slow ?
- }
- break;
- }
+ for (unsigned int i = 0; i < mSlicerManagers.size(); i++) {
+ if (DataTree->topLevelItem(i)->data(COLUMN_UL_VIEW,Qt::CheckStateRole).toInt() > 1) {
+ if (mSlicerManagers[i]->GetSlicer(0)->GetSlice() != value) {
+ mSlicerManagers[i]->GetSlicer(0)->SetSlice(value);
+ mSlicerManagers[i]->VerticalSliderHasChanged(0, value);
+
+ // If nor Update/Render -> slider not work
+ // only render = ok navigation, but for contour Update needed but slower ?
+
+ mSlicerManagers[i]->UpdateSlice(0); // <-- DS add this. Not too much update ? YES. but needed for ImageContour ...
+ //mSlicerManagers[i]->GetSlicer(0)->Render(); // <-- DS add this, needed for contour, seems ok ? not too slow ?
+ }
+ break;
}
+ }
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvMainWindow::SOVerticalSliderChanged()
{
- // DD("SOVerticalSliderChanged");
static int value=-1;
// DD(value);
// DD(SOVerticalSlider->value());
}
//------------------------------------------------------------------------------
-void vvMainWindow::AddImage(vvImage::Pointer image,std::string filename)
+vvSlicerManager* vvMainWindow::AddImage(vvImage::Pointer image,std::string filename)
{
vvSlicerManager* slicer_manager = new vvSlicerManager(4);
slicer_manager->SetImage(image);
this,SLOT(UpdateSliceRange(int,int,int,int,int)));
connect(mSlicerManagers.back(), SIGNAL(UpdateLinkManager(std::string,int,double,double,double,int)),
this,SLOT(UpdateLinkManager(std::string,int,double,double,double,int)));
+ connect(mSlicerManagers.back(), SIGNAL(UpdateLinkedNavigation(std::string,vvSlicerManager*)),
+ this,SLOT(UpdateLinkedNavigation(std::string,vvSlicerManager*)));
connect(mSlicerManagers.back(), SIGNAL(ChangeImageWithIndexOffset(vvSlicerManager*,int,int)),
this,SLOT(ChangeImageWithIndexOffset(vvSlicerManager*,int,int)));
connect(mSlicerManagers.back(), SIGNAL(LandmarkAdded()),landmarksPanel,SLOT(AddPoint()));
ShowLastImage();
InitDisplay();
qApp->processEvents();
+
+ // End
+ return slicer_manager;
}
//------------------------------------------------------------------------------