#include "vvMesh.h"
#include "vvStructSelector.h"
#include "vvMeshReader.h"
+#include "vvSaveState.h"
+#include "vvReadState.h"
#include "clitkConfiguration.h"
// ITK include
connect(actionSave_image,SIGNAL(triggered()),this,SLOT(SaveAs()));
contextActions.push_back(actionSave_image);
+ QAction* actionSave_state = contextMenu.addAction(QIcon(QString::fromUtf8(":/common/icons/filesave.png")),
+ tr("Save Current State"));
+ connect(actionSave_state,SIGNAL(triggered()),this,SLOT(SaveCurrentState()));
+ contextActions.push_back(actionSave_state);
+
+ QAction* actionRead_state = contextMenu.addAction(QIcon(QString::fromUtf8(":/common/icons/filesave.png")),
+ tr("Read Saved State"));
+ connect(actionRead_state,SIGNAL(triggered()),this,SLOT(ReadSavedState()));
+ contextActions.push_back(actionRead_state);
+
contextMenu.addSeparator();
contextMenu.addAction(actionAdd_VF_to_current_Image);
contextActions.push_back(actionAdd_VF_to_current_Image);
- QAction* actionAdd_Overlay_to_current_Image = menuOverlay->addAction(QIcon(QString::fromUtf8(":/common/icons/GPSup.png")),
- tr("Add overlay image to current image"));
- contextMenu.addAction(actionAdd_Overlay_to_current_Image);
- contextActions.push_back(actionAdd_Overlay_to_current_Image);
-
- connect(actionAdd_Overlay_to_current_Image,SIGNAL(triggered()), this,SLOT(SelectOverlayImage()));
+ //QAction* actionAdd_Overlay_to_current_Image = menuOverlay->addAction(QIcon(QString::fromUtf8(":/common/icons/GPSup.png")),
+ // tr("Add overlay image to current image"));
+ contextMenu.addAction(actionAdd_overlay_image_to_current_image);
+ contextActions.push_back(actionAdd_overlay_image_to_current_image);
contextMenu.addAction(actionAdd_fusion_image);
- connect(actionAdd_fusion_image,SIGNAL(triggered()),this,SLOT(SelectFusionImage()));
contextActions.push_back(actionAdd_fusion_image);
contextMenu.addSeparator();
dicomSeriesSelector = new vvDicomSeriesSelector();
inverseButton->setEnabled(0);
- actionAdd_Overlay_to_current_Image->setEnabled(0);
+ actionAdd_overlay_image_to_current_image->setEnabled(0);
actionSave_As->setEnabled(0);
actionAdd_VF_to_current_Image->setEnabled(0);
actionAdd_fusion_image->setEnabled(0);
connect(actionOpen_Image_With_Time,SIGNAL(triggered()),this,SLOT(OpenImageWithTime()));
connect(actionMerge_images_as_n_dim_t, SIGNAL(triggered()), this, SLOT(MergeImagesWithTime()));
connect(actionSave_As,SIGNAL(triggered()),this,SLOT(SaveAs()));
+ connect(actionSave_current_state,SIGNAL(triggered()),this,SLOT(SaveCurrentState()));
+ connect(actionRead_saved_state,SIGNAL(triggered()),this,SLOT(ReadSavedState()));
connect(actionExit,SIGNAL(triggered()),this,SLOT(close()));
connect(actionAdd_VF_to_current_Image,SIGNAL(triggered()),this,SLOT(OpenField()));
- connect(actionNavigation_Help,SIGNAL(triggered()),this,SLOT(ShowHelpDialog()));
+ connect(actionAdd_fusion_image,SIGNAL(triggered()),this,SLOT(SelectFusionImage()));
+ connect(actionAdd_overlay_image_to_current_image,SIGNAL(triggered()), this,SLOT(SelectOverlayImage())); connect(actionNavigation_Help,SIGNAL(triggered()),this,SLOT(ShowHelpDialog()));
connect(actionDocumentation,SIGNAL(triggered()),this,SLOT(ShowDocumentation()));
connect(actionRegister_vv,SIGNAL(triggered()),this,SLOT(PopupRegisterForm()));
actionSave_As->setEnabled(1);
actionAdd_VF_to_current_Image->setEnabled(1);
actionAdd_fusion_image->setEnabled(1);
+ actionAdd_overlay_image_to_current_image->setEnabled(1);
actionNorth_East_Window->setEnabled(1);
actionNorth_West_Window->setEnabled(1);
actionSouth_East_Window->setEnabled(1);
//------------------------------------------------------------------------------
void vvMainWindow::ApplyWindowLevelToAllImages()
{
+ int index = GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
+ if(index==-1) return;
+ double window = mSlicerManagers[index]->GetColorWindow();
+ double level = mSlicerManagers[index]->GetColorLevel();
+
for (unsigned int i = 0; i < mSlicerManagers.size(); i++) {
if (mSlicerManagers[i] == NULL)
continue;
- mSlicerManagers[i]->SetColorWindow(windowSpinBox->value());
- mSlicerManagers[i]->SetColorLevel(levelSpinBox->value());
+ mSlicerManagers[i]->SetColorWindow(window);
+ mSlicerManagers[i]->SetColorLevel(level);
mSlicerManagers[i]->SetPreset(6);
mSlicerManagers[i]->Render();
}
}
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+void vvMainWindow::SaveCurrentState()
+{
+ QString Extensions = "XML Files(*.xml)";
+ QString fileName = QFileDialog::getSaveFileName(this,
+ tr("Save Current Window State"),
+ "",
+ Extensions);
+
+ SaveCurrentStateAs(fileName.toStdString());
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvMainWindow::SaveCurrentStateAs(const std::string& stateFile)
+{
+ vvSaveState save_state;
+ save_state.Run(this, stateFile);
+
+ std::cout << "void vvMainWindow::SaveCurrentState()" << std::endl;
+}
+
+//------------------------------------------------------------------------------
+void vvMainWindow::ReadSavedState()
+{
+ QString Extensions = "XML Files(*.xml)";
+ QString fileName = QFileDialog::getOpenFileName(this,
+ tr("Load Window State"),
+ "",
+ Extensions);
+
+ ReadSavedStateFile(fileName.toStdString());
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvMainWindow::ReadSavedStateFile(const std::string& stateFile)
+{
+ vvReadState read_state;
+ read_state.Run(this, stateFile);
+}
+//------------------------------------------------------------------------------
+
+//------------------------------------------------------------------------------
+void vvMainWindow::LinkAllImages()
+{
+ linkPanel->linkAll();
+}
//------------------------------------------------------------------------------
void vvMainWindow::AddLink(QString image1,QString image2)
//------------------------------------------------------------------------------
void vvMainWindow::ChangeImageWithIndexOffset(vvSlicerManager *sm, int slicer, int offset)
{
+ if(mSlicerManagers.size()==1)
+ return;
+
int index = 0;
while(sm != mSlicerManagers[index])
index++;
- index = (index+offset) % mSlicerManagers.size();
+ index = (index+offset+mSlicerManagers.size()) % mSlicerManagers.size();
QTreeWidgetItem* item = GetItemFromSlicerManager(mSlicerManagers[index]);
item->setData(slicer+1,Qt::CheckStateRole,2); //change checkbox
"Images( *.png);;Images( *.jpg)");
// Loop on slices
- for(uint i=0; i<nbSlices; i++) {
+ for(int i=0; i<nbSlices; i++) {
// Change the slice
slicer->SetSlice(i); // -> change the slice of the current slicer
SM->UpdateSlice(0); // --> this one emit UpdateSlice