/*=========================================================================
Program: vv http://www.creatis.insa-lyon.fr/rio/vv
- Authors belong to:
+ Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
class vtkRenderer;
class vtkMatrix4x4;
class vvDicomSeriesSelector;
+#if CLITK_USE_PACS_CONNECTION
+class vvQPacsConnection;
+#endif
class vvSlicer;
+class QTreeWidget;
//------------------------------------------------------------------------------
class vvMainWindow: public vvMainWindowBase,
void LoadImages(std::vector<std::string> filenames, vvImageReader::LoadedImageType type);
vvSlicerManager * AddImage(vvImage::Pointer image,std::string filename);
void AddField(QString file,int index);
- void AddOverlayImage(int index, QString filename);
- void AddFusionImage(int index, QString filename);
+ bool CheckAddedImage(int index, QString imageType);
+ void AddOverlayImage(int index, std::vector<std::string> fileNames, vvImageReader::LoadedImageType type);
+ void AddFusionImage(int index, std::vector<std::string> fileNames, vvImageReader::LoadedImageType type);
void AddROI(int index, QString filename);
- ///Adds a mesh to a SlicerManager, with optional warping by vector field
+
+ //Process the sequence for fusion:
+ void AddFusionSequence(int index, std::vector<std::string> fileNames, vvImageReader::LoadedImageType type);
+
+ void AddLandmarks(int index, std::vector<std::string>);
+///Adds a mesh to a SlicerManager, with optional warping by vector field
void AddContour(int image_index, vvMesh::Pointer contour, bool propagation);
///This is used to show an image when opened or computed
void ShowLastImage();
+ void SaveCurrentStateAs(const std::string& stateFile);
+ void ReadSavedStateFile(const std::string& stateFile);
+ void LinkAllImages();
virtual void UpdateCurrentSlicer();
virtual QTabWidget * GetTab();
+ QTreeWidget* GetTree() { return DataTree; }
//vvMainWindowToolInfo * GetInfoForTool();
// void AddRunningTool(vvToolCreatorBase * tool);
public slots:
///Allows the user to open and select various surfaces contained in a dicom-struct file
+ void AddDCStructContour(int index, QString file);
void OpenDCStructContour();
///Computes the midposition image of a 4D sequence with a VF and displays it
void ComputeMidPosition();
void SliceImages();
void MergeImagesWithTime();
void OpenDicom();
+#if CLITK_USE_PACS_CONNECTION
+ void ConnectPacs();
+#endif
///Open a vtkPolyData surface mesh and display it over the current image
void OpenVTKContour();
void SaveAs();
+ void SaveCurrentState();
+ void ReadSavedState();
void CurrentImageChanged(std::string id);
void CurrentPickedImageChanged(std::string id);
void ImageInfoChanged();
void VectorChanged(int visibility, double x, double y, double z, double value);
void OverlayChanged(int visibility, double valueOver, double valueRef);
void FusionChanged(int visibility, double value);
+ //void FusionSequenceChanged(int visibility, double value);
void SegmentationOnCurrentImage();
void SurfaceViewerLaunch();
- void WindowLevelChanged(double window, double level,int preset, int colormap);
+ void WindowLevelChanged();
void UpdateSlice(int slicer, int slice);
- void UpdateTSlice(int slicer, int slice);
+ void UpdateTSlice(int slicer, int slice, int code=-1);
void UpdateSliceRange(int slicer, int min, int max, int tmin, int tmax);
void WindowLevelEdited();
+ void SetWindowLevel(double w, double l);
void UpdateColorMap();
void UpdateWindowLevel();
+ void UpdateSlicingPreset();
void SwitchWindowLevel();
void ApplyWindowLevelToAllImages();
+ void ApplyWindowToSetOfImages(double window, unsigned int indexMin, unsigned int indexMax);
+ void ApplyLevelToSetOfImages(double level, unsigned int indexMin, unsigned int indexMax);
void UpdateLinkManager(std::string id, int slicer, double x, double y, double z, int temps);
void UpdateLinkedNavigation(std::string id, vvSlicerManager *sm, vvSlicer* refSlicer);
- void AddLink(QString image1,QString image2);
+ void AddLink(QString image1,QString image2,bool fromPanel = true);
void RemoveLink(QString image1,QString image2);
void ChangeImageWithIndexOffset(vvSlicerManager *sm, int slicer, int offset);
void SaveNOScreenshot();
void SaveSEScreenshot();
void SaveSOScreenshot();
+ void SaveScreenshotAllSlices();
void ShowContextMenu(QPoint point);
void CloseImage();
void OpenField();
void SelectOverlayImage();
void SelectFusionImage();
+ //select the file(s) from the disk containing the image sequence to fuse
+ void SelectFusionSequence();
+ void SelectFusionSequenceCorrespondances();
+
+ void ResetTransformationToIdentity();
void SetVFProperty(int subsampling,int scale,int lut, int width, double r, double g, double b);
- void SetOverlayProperty(int color);
- void SetFusionProperty(int opacity, int tresOpacity, int colormap,double window,double level);
+ void SetOverlayProperty(int color, int linked, double window, double level);
+ void SetFusionProperty(int opacity, int tresOpacity, int colormap,double window,double level, bool showLegend);
+ void SetFusionSequenceProperty(int fusionSequenceFrameIndex, bool spatialSyncFlag, unsigned int fusionSequenceNbFrames, bool temporalSyncFlag);
void GoToCursor();
+ void GoToLandmark();
void PlayPause();
void PlayNext();
void ChangeFrameRate(int rate) {
vvDocumentation *documentation;
vvDicomSeriesSelector *dicomSeriesSelector;
+#if CLITK_USE_PACS_CONNECTION
+ vvQPacsConnection *PacsConnection;
+#endif
+
bool viewMode;
bool playMode;
QString GetSizeInBytes(unsigned long size);
QString GetVectorDoubleAsString(std::vector<double> vectorDouble);
QString GetVectorIntAsString(std::vector<int> vectorInt);
- QString Get4x4MatrixDoubleAsString(vtkSmartPointer<vtkMatrix4x4> matrix);
- int GetSlicerIndexFromItem(QTreeWidgetItem* item);
+ int GetSlicerIndexFromItem(QTreeWidgetItem* item); //this actually returns the SlicerManager index TODO: rename it to GetSlicerManagerIndexFromItem
QTreeWidgetItem* GetItemFromSlicerManager(vvSlicerManager* sm);
void SaveScreenshot(QVTKWidget *widget);
int GetImageDuplicateFilenameNumber(std::string filename);