]> Creatis software - clitk.git/blob - vv/vvToolROIManager.h
Merge branch 'VTK6_Qt5' into VTK6_Qt5_LineProfile
[clitk.git] / vv / vvToolROIManager.h
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://www.centreleonberard.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17   ===========================================================================**/
18
19 #ifndef VVTOOLROIMANAGER_H
20 #define VVTOOLROIMANAGER_H
21
22 #if QT_VERSION < 0x050000
23 #include <QtDesigner/QDesignerExportWidget>
24 #else
25 #include <QtUiPlugin/QDesignerExportWidget>
26 #endif
27 #include <QSharedPointer>
28
29 #include "vvToolBase.h"
30 #include "vvROIActor.h"
31 #include "clitkDicomRT_ROI.h"
32 #include "ui_vvToolROIManager.h"
33
34 class vvROIActor;
35
36 //------------------------------------------------------------------------------
37 class vvToolROIManager:
38   public QWidget, 
39   public vvToolBase<vvToolROIManager>, 
40   public Ui::vvToolROIManager
41 {
42   Q_OBJECT
43   public:
44   vvToolROIManager(vvMainWindowBase* parent=0, Qt::WindowFlags f=Qt::Dialog);
45   virtual ~vvToolROIManager();
46
47   static void Initialize();
48   virtual void InputIsSelected(vvSlicerManager *m);
49
50   void AddImage(vvImage * binaryImage, std::string name, std::string filename, double BG, bool m_modeBG=true);
51   void UpdateAllContours();
52   void UpdateAllROIStatus();
53   virtual void SaveState(std::auto_ptr<QXmlStreamWriter> & m_XmlWriter);
54   virtual void InitializeNewTool(bool ReadStateFlag);
55
56   public slots:
57   void AnImageIsBeingClosed(vvSlicerManager *);
58   void SelectedImageHasChanged(vvSlicerManager *);
59   void Open();
60   void OpenBinaryImage(QStringList & filenames);
61   void OpenDicomImage(std::string filaneme);
62   void SelectedItemChangedInTree();
63   void VisibleROIToggled(bool b);
64   void VisibleContourROIToggled(bool b);
65   void OpacityChanged(int v);
66   void ChangeColor();
67   void ChangeContourColor();
68   void ChangeContourWidth(int n);
69   void ChangeDepth(int n);
70   void AllVisibleROIToggled(int b);
71   void AllVisibleContourROIToggled(int b);
72   void ReloadCurrentROI();  
73   void close();
74   void RemoveROI();
75   vvSlicerManager * GetCurrentSlicerManager() { return mCurrentSlicerManager; }
76
77 protected:
78   Ui::vvToolROIManager ui;
79   vvSlicerManager * mCurrentSlicerManager; // need it because do not inherit from vvToolWidgetBase
80   vvImage * mCurrentImage;
81   vvMainWindowBase * mMainWindow;
82   int mIndexFirstTab;
83   bool mOpenFileBrowserFlag;
84   
85   int mNumberOfVisibleROI;
86   int mNumberOfVisibleContourROI;
87   static int nbTotalROI;
88
89   vtkSmartPointer<vtkLookupTable> mDefaultLUTColor;
90
91   QStringList mOpenedBinaryImageFilenames;
92   std::vector<clitk::DicomRT_ROI::Pointer> mROIList;
93   std::vector<QSharedPointer<vvROIActor> > mROIActorsList;
94
95   // Data for the widget Tree
96   std::vector< QSharedPointer<QTreeWidgetItem> > mTreeWidgetList;
97   std::map<clitk::DicomRT_ROI::Pointer, QTreeWidgetItem *> mMapROIToTreeWidget;
98   std::map<QTreeWidgetItem *, clitk::DicomRT_ROI::Pointer> mMapTreeWidgetToROI;
99   
100   // Data for current selected roi
101   clitk::DicomRT_ROI::Pointer mCurrentROI;
102   QSharedPointer<vvROIActor> mCurrentROIActor;
103   
104   // Data for XML Reader
105   void ReadXMLInformation();
106   void ReadXMLInformation_ROI();
107   uint mInitialImageIndex;
108   QStringList mROIFilenames;
109   std::vector<QSharedPointer<vvROIActor> > mROIActorsParamList;
110  
111 }; // end class vvToolROIManager
112 //------------------------------------------------------------------------------
113
114 #endif
115