Program: vv
Module: $RCSfile: vvMainWindow.cxx,v $
Language: C++
- Date: $Date: 2010/02/07 08:49:41 $
- Version: $Revision: 1.8 $
+ Date: $Date: 2010/03/01 15:38:09 $
+ Version: $Revision: 1.14 $
Author : Pierre Seroul (pierre.seroul@gmail.com)
Copyright (C) 200COLUMN_IMAGE_NAME
#include "vvProgressDialog.h"
#include "vvQDicomSeriesSelector.h"
#include "vvSlicerManager.h"
-#include "clitkIOCommon.h"
+#include "clitkImageCommon.h"
#include "vvSlicer.h"
#include "vvInteractorStyleNavigator.h"
#include "vvImageWriter.h"
#include "vvMesh.h"
#include "vvStructSelector.h"
#include "vvMeshReader.h"
-#include "vvCropDialog.h"
#include "vvConstants.h"
+
#ifdef CLITK_VV_USE_BDCM
#include <bdcmDicomFilesSelectorDialog.h>
#endif
#define COLUMN_RELOAD_IMAGE 6
#define COLUMN_IMAGE_NAME 7
+#define EXTENSIONS "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.hdr *.vox *.his *.xdr)"
+
/*Data Tree values
0,Qt::UserRole full filename
1,Qt::CheckStateRole checkbutton UL View
5,Qt::UserRole mSlicerManager id*/
//------------------------------------------------------------------------------
-vvMainWindow::vvMainWindow() {
+vvMainWindow::vvMainWindow():vvMainWindowBase() {
setupUi(this); // this sets up the GUI
mInputPathName = "";
- mCurrentToolInfo = 0;
+ mMenuTools = menuTools;
+ mMainWidget = this;
//Init the contextMenu
this->setContextMenuPolicy(Qt::CustomContextMenu);
contextMenu.addSeparator();
- QAction* actionCrop_image = contextMenu.addAction(QIcon(QString::fromUtf8(":/new/prefix1/icons/crop.png")),
- tr("Crop Current Image"));
- connect(actionCrop_image,SIGNAL(triggered()),this,SLOT(CropImage()));
- contextActions.push_back(actionCrop_image);
+ // QAction* actionCrop_image = contextMenu.addAction(QIcon(QString::fromUtf8(":/new/prefix1/icons/crop.png")),
+ // tr("Crop Current Image"));
+ // connect(actionCrop_image,SIGNAL(triggered()),this,SLOT(CropImage()));
+ // contextActions.push_back(actionCrop_image);
QAction* actionSplit_image = contextMenu.addAction(QIcon(QString::fromUtf8(":/new/prefix1/icons/cut.png")),
tr("Split Current Image"));
connect(actionAdd_fusion_image,SIGNAL(triggered()),this,SLOT(AddFusionImage()));
contextActions.push_back(actionAdd_fusion_image);
-
//init the DataTree
mSlicerManagers.resize(0);
}
// Adding all new tools (insertion in the menu)
- vvToolManager::GetInstance()->Initialize(this);
+ vvToolManager::GetInstance()->InsertToolsInMenu(this);
}
//------------------------------------------------------------------------------
QApplication::restoreOverrideCursor();
}
}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
void vvMainWindow::AddContour(int image_index, vvMesh::Pointer contour, bool propagation)
{
QTreeWidgetItem *item = new QTreeWidgetItem();
mSlicerManagers[image_index]->AddContour(contour,propagation);
mSlicerManagers[image_index]->Render();
}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::OpenVTKContour()
QApplication::restoreOverrideCursor();
}
}
+//------------------------------------------------------------------------------
+
+
//------------------------------------------------------------------------------
void vvMainWindow::OpenDCStructContour()
{
}
}
}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::ComputeDeformableRegistration()
}
else QMessageBox::information(this, "Need to open image","You must open an image first.");
}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::WarpImage()
else
QMessageBox::warning(this,tr("No vector field"),tr("Sorry, can't warp without a vector field"));
}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::WarpImage(vvSlicerManager* selected_slicer,int reference_phase)
else
QMessageBox::warning(this,tr("No vector field"),tr("Sorry, can't warp without a vector field."));
}
+//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
vvMainWindow::~vvMainWindow() {
}
//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::MergeImages() {
- QString Extensions = "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.hdr *.vox)";
+ QString Extensions = EXTENSIONS;
Extensions += ";;All Files (*)";
QStringList files = QFileDialog::getOpenFileNames(this,tr("Merge Images"),mInputPathName,Extensions);
if (files.isEmpty())
}
//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::MergeImagesWithTime() {
- QString Extensions = "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.hdr *.vox)";
+ QString Extensions = EXTENSIONS;
Extensions += ";;All Files (*)";
QStringList files = QFileDialog::getOpenFileNames(this,tr("Merge Images With Time"),mInputPathName,Extensions);
if (files.isEmpty())
}
//------------------------------------------------------------------------------
+
//------------------------------------------------------------------------------
void vvMainWindow::OpenDicom() {
std::vector<std::string> files;
//------------------------------------------------------------------------------
void vvMainWindow::OpenImages() {
- QString Extensions = "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.hdr *.vox)";
+ QString Extensions = EXTENSIONS;
Extensions += ";;All Files (*)";
QStringList files = QFileDialog::getOpenFileNames(this,tr("Load Images"),mInputPathName,Extensions);
//------------------------------------------------------------------------------
void vvMainWindow::OpenImageWithTime() {
- QString Extensions = "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.hdr *.vox)";
+ QString Extensions = EXTENSIONS;
Extensions += ";;All Files (*)";
QStringList files = QFileDialog::getOpenFileNames(this,tr("Load Images With Time"),mInputPathName,Extensions);
}
QApplication::restoreOverrideCursor();
-
- // vvToolManager::GetInstance()->UpdateEnabledTool();
- // emit SlicerManagersHasChanged();
}
//------------------------------------------------------------------------------
}
windowSpinBox->setValue(mSlicerManagers[index]->GetColorWindow());
levelSpinBox->setValue(mSlicerManagers[index]->GetColorLevel());
- DD(mSlicerManagers[index]->GetColorMap());
- DD(mSlicerManagers[index]->GetPreset());
+ // DD(mSlicerManagers[index]->GetColorMap());
+ // DD(mSlicerManagers[index]->GetPreset());
presetComboBox->setCurrentIndex(mSlicerManagers[index]->GetPreset());
colorMapComboBox->setCurrentIndex(mSlicerManagers[index]->GetColorMap());
- 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;
- }
- }
- windowSpinBox->setValue(mSlicerManagers[index]->GetColorWindow());
- levelSpinBox->setValue(mSlicerManagers[index]->GetColorLevel());
- presetComboBox->setCurrentIndex(mSlicerManagers[index]->GetPreset());
- colorMapComboBox->setCurrentIndex(mSlicerManagers[index]->GetColorMap());
+ 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+")");
- if (mSlicerManagers[index]->GetSlicer(0)->GetVF())
- {
- overlayPanel->getVFName(mSlicerManagers[index]->GetVFName().c_str());
- overlayPanel->getVFProperty(mSlicerManagers[index]->GetSlicer(0)->GetVFSubSampling(),
- mSlicerManagers[index]->GetSlicer(0)->GetVFScale(),
- mSlicerManagers[index]->GetSlicer(0)->GetVFLog());
- }
- else
- {
- overlayPanel->getVFName(mSlicerManagers[index]->GetVFName().c_str());
- overlayPanel->getVFProperty(-1,-1,-1);
- }
- if (mSlicerManagers[index]->GetSlicer(0)->GetOverlay())
- {
- overlayPanel->getOverlayName(mSlicerManagers[index]->GetOverlayName().c_str());
- overlayPanel->getOverlayProperty(mSlicerManagers[index]->GetOverlayColor());
- }
- else
- {
- overlayPanel->getOverlayName(mSlicerManagers[index]->GetOverlayName().c_str());
- overlayPanel->getOverlayProperty(-1);
- }
- if (mSlicerManagers[index]->GetSlicer(0)->GetFusion())
- {
- overlayPanel->getFusionName(mSlicerManagers[index]->GetFusionName().c_str());
- overlayPanel->getFusionProperty(mSlicerManagers[index]->GetFusionOpacity(),
- mSlicerManagers[index]->GetFusionColorMap(),
- mSlicerManagers[index]->GetFusionWindow(),
- mSlicerManagers[index]->GetFusionLevel());
- }
- else
- {
- overlayPanel->getFusionName(mSlicerManagers[index]->GetFusionName().c_str());
- overlayPanel->getFusionProperty(-1, -1,-1,-1);
- }
- }
+ 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;
+ }
+ }
+ windowSpinBox->setValue(mSlicerManagers[index]->GetColorWindow());
+ levelSpinBox->setValue(mSlicerManagers[index]->GetColorLevel());
+ presetComboBox->setCurrentIndex(mSlicerManagers[index]->GetPreset());
+ colorMapComboBox->setCurrentIndex(mSlicerManagers[index]->GetColorMap());
+
+ if (mSlicerManagers[index]->GetSlicer(0)->GetVF())
+ {
+ overlayPanel->getVFName(mSlicerManagers[index]->GetVFName().c_str());
+ overlayPanel->getVFProperty(mSlicerManagers[index]->GetSlicer(0)->GetVFSubSampling(),
+ mSlicerManagers[index]->GetSlicer(0)->GetVFScale(),
+ mSlicerManagers[index]->GetSlicer(0)->GetVFLog());
+ }
+ else
+ {
+ overlayPanel->getVFName(mSlicerManagers[index]->GetVFName().c_str());
+ overlayPanel->getVFProperty(-1,-1,-1);
+ }
+ if (mSlicerManagers[index]->GetSlicer(0)->GetOverlay())
+ {
+ overlayPanel->getOverlayName(mSlicerManagers[index]->GetOverlayName().c_str());
+ overlayPanel->getOverlayProperty(mSlicerManagers[index]->GetOverlayColor());
+ }
+ else
+ {
+ overlayPanel->getOverlayName(mSlicerManagers[index]->GetOverlayName().c_str());
+ overlayPanel->getOverlayProperty(-1);
+ }
+ if (mSlicerManagers[index]->GetSlicer(0)->GetFusion())
+ {
+ overlayPanel->getFusionName(mSlicerManagers[index]->GetFusionName().c_str());
+ overlayPanel->getFusionProperty(mSlicerManagers[index]->GetFusionOpacity(),
+ mSlicerManagers[index]->GetFusionColorMap(),
+ mSlicerManagers[index]->GetFusionWindow(),
+ mSlicerManagers[index]->GetFusionLevel());
+ }
+ else
+ {
+ overlayPanel->getFusionName(mSlicerManagers[index]->GetFusionName().c_str());
+ overlayPanel->getFusionProperty(-1, -1,-1,-1);
+ }
+ }
}
//------------------------------------------------------------------------------
msgBox.addButton(tr("Cancel"), QMessageBox::RejectRole);
if (msgBox.exec() == QMessageBox::AcceptRole)
{
+
+ // Tell tools that we close an image
+ emit AnImageIsBeingClosed(mSlicerManagers[index]);
+
std::vector<vvSlicerManager*>::iterator Manageriter = mSlicerManagers.begin();
DataTree->takeTopLevelItem(index);
for (int i = 0; i < index; i++)
mSlicerManagers[index]->RemoveActors();
delete mSlicerManagers[index];
mSlicerManagers.erase(Manageriter);
+
+ //
InitDisplay();
}
}
-
- // vvToolManager::GetInstance()->UpdateEnabledTool();
- // emit SlicerManagersHasChanged();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
void vvMainWindow::ReloadImage(QTreeWidgetItem* item, int column) {
// int index = GetSlicerIndexFromItem(item);
-// QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
-// if (item->data(1,Qt::UserRole).toString() == "vector")
-// mSlicerManagers[index]->ReloadVF();
-// else
-// mSlicerManagers[index]->Reload();
+ // QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+ // if (item->data(1,Qt::UserRole).toString() == "vector")
+ // mSlicerManagers[index]->ReloadVF();
+ // else
+ // mSlicerManagers[index]->Reload();
-// QApplication::restoreOverrideCursor();
+ // QApplication::restoreOverrideCursor();
int index = GetSlicerIndexFromItem(item);
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
QString role=item->data(1,Qt::UserRole).toString();
}
//------------------------------------------------------------------------------
-void vvMainWindow::CropImage()
-{
- int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
- vvCropDialog crop(mSlicerManagers,index);
- if(crop.exec())
- AddImage(crop.GetOutput(),"cropped.mhd");
-}
+// void vvMainWindow::CropImage()
+// {
+// int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
+// vvCropDialog crop(mSlicerManagers,index);
+// if(crop.exec())
+// AddImage(crop.GetOutput(),"cropped.mhd");
+// }
//------------------------------------------------------------------------------
void vvMainWindow::SplitImage() {
return;
}
- QString Extensions = "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.hdr *.vox)";
+ QString Extensions = EXTENSIONS;
Extensions += ";;All Files (*)";
QString file = QFileDialog::getOpenFileName(this,tr("Load Overlay image"),mInputPathName,Extensions);
if (!file.isEmpty())
return;
}
- QString Extensions = "Images ( *.bmp *.png *.jpeg *.jpg *.tif *.mhd *.hdr *.vox)";
+ QString Extensions = EXTENSIONS;
Extensions += ";;All Files (*)";
QString file = QFileDialog::getOpenFileName(this,tr("Load Fusion image"),mInputPathName,Extensions);
if (!file.isEmpty())
if (DataTree->topLevelItem(i)->data(COLUMN_UL_VIEW,Qt::CheckStateRole).toInt() > 1)
{
mSlicerManagers[i]->GetSlicer(0)->SetSlice(value);
+ mSlicerManagers[i]->UpdateSlice(0); // <-- DS add this. Not too much update ?
break;
}
}
//------------------------------------------------------------------------------
void vvMainWindow::UpdateSlice(int slicer, int slice) {
- if (slicer == 0)
- NOVerticalSlider->setValue(slice);
+ if (slicer == 0) {
+ if (slice != NOVerticalSlider->value())
+ NOVerticalSlider->setValue(slice);
+ }
else if (slicer == 1)
NEVerticalSlider->setValue(slice);
else if (slicer == 2)
ShowLastImage();
InitDisplay();
qApp->processEvents();
-
- // vvToolManager::GetInstance()->UpdateEnabledTool();
- // emit SlicerManagersHasChanged();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
-vvMainWindowToolInfo * vvMainWindow::GetInfoForTool() {
- DD("GetInfoForTool");
- if (mCurrentToolInfo ==0) mCurrentToolInfo = new vvMainWindowToolInfo;
-
- mCurrentToolInfo->mMenuTools = menuTools;
- mCurrentToolInfo->mSlicerManagers = &mSlicerManagers;
+void vvMainWindow::UpdateCurrentSlicer() {
int index = -1;
- DD(DataTree->selectedItems().size());
if (DataTree->selectedItems().size() > 0) {
index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
- DD(DataTree->selectedItems()[0]);
- DD(index);
}
- mCurrentToolInfo->mSlicerManagerCurrentIndex = index;
-
- return mCurrentToolInfo;
+ mSlicerManagerCurrentIndex = index;
}
//------------------------------------------------------------------------------
-