X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvMainWindow.h;h=2d6a21dde238ef34ed446114ed907ad503cfc429;hb=0e51b8dde15bfe59437d6f351c516f4137faf631;hp=dfcbca6d40319fff99f8a23e1dd0edd5b6012240;hpb=1d616cc7be31f7195c8bba4142e02350cd2fb958;p=clitk.git diff --git a/vv/vvMainWindow.h b/vv/vvMainWindow.h index dfcbca6..2d6a21d 100644 --- a/vv/vvMainWindow.h +++ b/vv/vvMainWindow.h @@ -1,7 +1,7 @@ /*========================================================================= 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 @@ -21,6 +21,7 @@ #include #include +#include #include "ui_vvMainWindow.h" #include "vvMainWindowBase.h" #include "vvToolManager.h" @@ -39,6 +40,9 @@ class vtkImageData; class vtkRenderer; class vtkMatrix4x4; class vvDicomSeriesSelector; +#if CLITK_USE_PACS_CONNECTION +class vvQPacsConnection; +#endif class vvSlicer; class QTreeWidget; @@ -54,15 +58,22 @@ class vvMainWindow: public vvMainWindowBase, void LoadImages(std::vector 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 fileNames, vvImageReader::LoadedImageType type); + void AddFusionImage(int index, std::vector 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 fileNames, vvImageReader::LoadedImageType type); + + void AddLandmarks(int index, std::vector); +///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(); @@ -72,6 +83,7 @@ class vvMainWindow: public vvMainWindowBase, 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(); @@ -83,6 +95,9 @@ public slots: 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(); @@ -104,22 +119,26 @@ public slots: 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(); 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); @@ -147,13 +166,19 @@ public slots: 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, int linked, double window, double level); - void SetFusionProperty(int opacity, int tresOpacity, int colormap,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) { @@ -168,6 +193,10 @@ protected: void createRecentlyOpenedFilesMenu(); void updateRecentlyOpenedFilesMenu(const std::list &files); + // Drag and drop event handlers + virtual void dragEnterEvent(QDragEnterEvent *event); + virtual void dropEvent(QDropEvent *event); + private: //variables @@ -176,6 +205,10 @@ private: vvDocumentation *documentation; vvDicomSeriesSelector *dicomSeriesSelector; +#if CLITK_USE_PACS_CONNECTION + vvQPacsConnection *PacsConnection; +#endif + bool viewMode; bool playMode; @@ -192,8 +225,7 @@ private: QString GetSizeInBytes(unsigned long size); QString GetVectorDoubleAsString(std::vector vectorDouble); QString GetVectorIntAsString(std::vector vectorInt); - QString Get4x4MatrixDoubleAsString(vtkSmartPointer 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);