#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);
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(this,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(ShowContextMenu(QPoint)));
+#include "vvSaveState.h"
connect(linkPanel,SIGNAL(addLink(QString,QString)),this,SLOT(AddLink(QString,QString)));
connect(linkPanel,SIGNAL(removeLink(QString,QString)),this,SLOT(RemoveLink(QString,QString)));
connect(overlayPanel,SIGNAL(VFPropertyUpdated(int,int,int,int,double,double,double)),this,SLOT(SetVFProperty(int,int,int,int,double,double,double)));
}
//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
+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::AddLink(QString image1,QString image2)
void vvMainWindow::SaveScreenshotAllSlices()
{
QVTKWidget *widget = NOViewWidget;
- vtkSmartPointer<vtkRenderWindow> renderWindow = widget->GetRenderWindow();
int index = 0;// GetSlicerIndexFromItem(DataTree->selectedItems()[0]);
vvSlicerManager * SM = mSlicerManagers[index];
vvSlicer * slicer = SM->GetSlicer(0);
int orientation = slicer->GetOrientation();
int nbSlices = image->GetSize()[orientation];
+ vtkSmartPointer<vtkRenderWindow> renderWindow = widget->GetRenderWindow();
// Select filename base
QString filename = QFileDialog::getSaveFileName(this,
tr("Save As (filename will be completed by slice number)"),
itksys::SystemTools::GetFilenamePath(mSlicerManagers[index]->GetFileName()).c_str(),
- "Images( *.png);;");
+ "Images( *.png);;Images( *.jpg)");
// Loop on slices
for(uint i=0; i<nbSlices; i++) {
// Change the slice
- slicer->SetSlice(i);
-
+ slicer->SetSlice(i); // -> change the slice of the current slicer
+ SM->UpdateSlice(0); // --> this one emit UpdateSlice
+ QCoreApplication::flush(); // -> needed to force display of contours
+
// Screenshot
vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter = vtkSmartPointer<vtkWindowToImageFilter>::New();
windowToImageFilter->SetInput(renderWindow);
vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New();
std::string fn = itksys::SystemTools::GetFilenameWithoutLastExtension(filename.toStdString());
- fn = fn + "_" + clitk::toString(i) + itksys::SystemTools::GetFilenameLastExtension(filename.toStdString());
+ std::string num = clitk::toString(i);
+ if (i<10) num = "0"+num;
+ if (i<100) num = "0"+num;
+ if (i<1000) num = "0"+num;
+
+ fn = itksys::SystemTools::GetFilenamePath(filename.toStdString()) + "/"+ fn
+ + "_" + num + itksys::SystemTools::GetFilenameLastExtension(filename.toStdString());
writer->SetFileName(fn.c_str());
writer->SetInput(windowToImageFilter->GetOutput());
writer->Write();