X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvMainWindow.h;h=b093554d0a0b92018d352f1eb1236db1012b8be6;hb=2b8e7f1fda772413d48a86b172c7910dd9677205;hp=300d758463ac0ae38628092273e05ddeaa4038ab;hpb=e49162511fd226bd3b5299e472dbd4db803cd01a;p=clitk.git diff --git a/vv/vvMainWindow.h b/vv/vvMainWindow.h index 300d758..b093554 100644 --- a/vv/vvMainWindow.h +++ b/vv/vvMainWindow.h @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #ifndef VVMAINWINDOW_H #define VVMAINWINDOW_H @@ -24,17 +24,23 @@ #include "ui_vvMainWindow.h" #include "vvMainWindowBase.h" #include "vvToolManager.h" -#include "vvConstants.h" +#include "vvImageReader.h" #include "vvMesh.h" #include "clitkMemoryUsage.h" +#include "vtkSmartPointer.h" + + class vvSlicerManager; class vvHelpDialog; class vvDocumentation; class vtkRenderWindowInteractor; class vtkImageData; class vtkRenderer; +class vtkMatrix4x4; class vvDicomSeriesSelector; +class vvSlicer; +class QTreeWidget; //------------------------------------------------------------------------------ class vvMainWindow: public vvMainWindowBase, @@ -45,27 +51,35 @@ class vvMainWindow: public vvMainWindowBase, public: vvMainWindow(); ~vvMainWindow(); - void LoadImages(std::vector filenames, LoadedImageType type); + 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); + 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(); + 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 MIP of the currently selected image and displays it - void ComputeMIP(); ///Computes the midposition image of a 4D sequence with a VF and displays it void ComputeMidPosition(); void OpenImages(); @@ -79,10 +93,14 @@ public slots: ///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 ShowHelpDialog(); void ShowDocumentation(); + void PopupRegisterForm(bool checkCanPush=false); void ComputeDeformableRegistration(); void WarpImage(); void ChangeViewMode(); @@ -93,22 +111,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 WindowsChanged(int window, int view, int slice); - 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); - void AddLink(QString image1,QString image2); + void UpdateLinkedNavigation(std::string id, vvSlicerManager *sm, vvSlicer* refSlicer); + void AddLink(QString image1,QString image2,bool fromPanel = true); void RemoveLink(QString image1,QString image2); void ChangeImageWithIndexOffset(vvSlicerManager *sm, int slicer, int offset); @@ -128,6 +150,7 @@ public slots: void SaveNOScreenshot(); void SaveSEScreenshot(); void SaveSOScreenshot(); + void SaveScreenshotAllSlices(); void ShowContextMenu(QPoint point); void CloseImage(); @@ -135,12 +158,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); - void SetOverlayProperty(int color); - void SetFusionProperty(int opacity,int colormap,double window,double level); + 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, 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) { @@ -148,7 +178,13 @@ public slots: } void UpdateRenderWindows(); void UpdateMemoryUsage(); - + void show(); + +protected: + + void createRecentlyOpenedFilesMenu(); + void updateRecentlyOpenedFilesMenu(const std::list &files); + private: //variables @@ -173,12 +209,13 @@ private: QString GetSizeInBytes(unsigned long size); QString GetVectorDoubleAsString(std::vector vectorDouble); QString GetVectorIntAsString(std::vector vectorInt); - 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(vtkImageData* image); + void SaveScreenshot(QVTKWidget *widget); int GetImageDuplicateFilenameNumber(std::string filename); QMenu contextMenu; + QMenu* recentlyOpenedFilesMenu; //QMenu *AddSubImageMenu; std::vector contextActions; std::vector horizontalSliders; @@ -186,6 +223,8 @@ private: int mFrameRate; std::string mCurrentSelectedImageId; + std::string mCurrentPickedImageId; + unsigned int mCurrentPickedImageIndex; // vvMainWindowToolInfo * mCurrentToolInfo; // std::vector mListOfRunningTool; @@ -193,9 +232,7 @@ private: static vvMainWindow * mSingleton; int mCurrentTime; - + }; -#include "vvMainWindow.txx" - #endif