X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvMainWindow.h;h=12aaaf1a5f0b8d6f0d5a41d40f0d7bfe16092110;hb=7bf9a4e01ea80f06257ece374f291abb513c09fc;hp=b3d60313ffa09a5b070231543ae2a01e2d4027e3;hpb=f7dee5f397e4efa933ef32507698ff1c1e573c2e;p=clitk.git diff --git a/vv/vvMainWindow.h b/vv/vvMainWindow.h index b3d6031..12aaaf1 100644 --- a/vv/vvMainWindow.h +++ b/vv/vvMainWindow.h @@ -1,40 +1,35 @@ /*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Program: vv - Language: C++ - Author : Pierre Seroul (pierre.seroul@gmail.com) + 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 -Copyright (C) 2008 -Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr -CREATIS-LRMN http://www.creatis.insa-lyon.fr + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the copyright notices for more information. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, version 3 of the License. + It is distributed under dual licence -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +===========================================================================**/ - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - =========================================================================*/ - -#ifndef vvMainWindow_h -#define vvMainWindow_h +#ifndef VVMAINWINDOW_H +#define VVMAINWINDOW_H #include #include - #include "ui_vvMainWindow.h" - -#include "vvConstants.h" -#include "vvImage.h" -#include "vvMesh.h" +#include "vvMainWindowBase.h" #include "vvToolManager.h" -#include "clitkCommon.h" +#include "vvImageReader.h" +#include "vvMesh.h" +#include "clitkMemoryUsage.h" + +#include "vtkSmartPointer.h" + class vvSlicerManager; class vvHelpDialog; @@ -42,42 +37,43 @@ class vvDocumentation; class vtkRenderWindowInteractor; class vtkImageData; class vtkRenderer; +class vtkMatrix4x4; class vvDicomSeriesSelector; +class vvSlicer; +class QTreeWidget; //------------------------------------------------------------------------------ -struct vvMainWindowToolInfo { - QMenu * mMenuTools; - std::vector * mSlicerManagers; - int mSlicerManagerCurrentIndex; -}; -//------------------------------------------------------------------------------ - - -//------------------------------------------------------------------------------ -class vvMainWindow : public QMainWindow, private Ui::vvMainWindow +class vvMainWindow: public vvMainWindowBase, + private Ui::vvMainWindow { Q_OBJECT public: vvMainWindow(); ~vvMainWindow(); - void LoadImages(std::vector filenames, LoadedImageType type); - void AddImage(vvImage::Pointer image,std::string filename); - void AddImage(vvSlicerManager * m); + 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 AddROI(int index, QString filename); ///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(); - vvMainWindowToolInfo * GetInfoForTool(); + 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 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(); @@ -85,15 +81,20 @@ public slots: void OpenRecentImage(); void OpenImageWithTime(); void MergeImages(); + void SliceImages(); void MergeImagesWithTime(); void OpenDicom(); ///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(); @@ -104,22 +105,24 @@ 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 ResampleCurrentImage(); 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 UpdateSliceRange(int slicer, int min, int max, int tmin, int tmax); void WindowLevelEdited(); + void SetWindowLevel(double w, double l); void UpdateColorMap(); void UpdateWindowLevel(); void SwitchWindowLevel(); + void ApplyWindowLevelToAllImages(); 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 RemoveLink(QString image1,QString image2); + void ChangeImageWithIndexOffset(vvSlicerManager *sm, int slicer, int offset); ///Generic method called when any one of the horizontal sliders is moved void HorizontalSliderMoved(int value,int column, int slicer_index); @@ -137,19 +140,19 @@ public slots: void SaveNOScreenshot(); void SaveSEScreenshot(); void SaveSOScreenshot(); + void SaveScreenshotAllSlices(); void ShowContextMenu(QPoint point); - void CropImage(); - void SplitImage(); void CloseImage(); void ReloadImage(); void OpenField(); void SelectOverlayImage(); - void AddFusionImage(); + void SelectFusionImage(); + void ResetTransformationToIdentity(); - void SetVFProperty(int subsampling,int scale,int lut); - 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); void GoToCursor(); void PlayPause(); @@ -158,19 +161,22 @@ public slots: mFrameRate = rate; } void UpdateRenderWindows(); - -// signals: -// void SlicerManagersHasChanged(); - + void UpdateMemoryUsage(); + void show(); + +protected: + + void createRecentlyOpenedFilesMenu(); + void updateRecentlyOpenedFilesMenu(const std::list &files); + private: //variables - std::vector mSlicerManagers; + // std::vector mSlicerManagers; vvHelpDialog *help_dialog; vvDocumentation *documentation; vvDicomSeriesSelector *dicomSeriesSelector; - QString mInputPathName; bool viewMode; bool playMode; @@ -187,21 +193,31 @@ private: QString GetSizeInBytes(unsigned long size); QString GetVectorDoubleAsString(std::vector vectorDouble); QString GetVectorIntAsString(std::vector vectorInt); + QString Get4x4MatrixDoubleAsString(vtkSmartPointer matrix); int GetSlicerIndexFromItem(QTreeWidgetItem* item); - void SaveScreenshot(vtkImageData* image); + QTreeWidgetItem* GetItemFromSlicerManager(vvSlicerManager* sm); + void SaveScreenshot(QVTKWidget *widget); + int GetImageDuplicateFilenameNumber(std::string filename); QMenu contextMenu; + QMenu* recentlyOpenedFilesMenu; //QMenu *AddSubImageMenu; std::vector contextActions; std::vector horizontalSliders; std::vector verticalSliders; int mFrameRate; + + std::string mCurrentSelectedImageId; + std::string mCurrentPickedImageId; + unsigned int mCurrentPickedImageIndex; - vvMainWindowToolInfo * mCurrentToolInfo; + // vvMainWindowToolInfo * mCurrentToolInfo; + // std::vector mListOfRunningTool; static vvMainWindow * mSingleton; -}; -#include "vvMainWindow.txx" + int mCurrentTime; + +}; #endif