]> Creatis software - clitk.git/blob - vv/vvToolROIManager.h
Debug RTStruct conversion with empty struc
[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 #include <QtGlobal>
23 #if QT_VERSION >= 0x050000
24 #include <QtUiPlugin/QDesignerExportWidget>
25 #else
26 #include <QtDesigner/QDesignerExportWidget>
27 #endif
28 #include <QSharedPointer>
29
30 #include "vvToolBase.h"
31 #include "vvROIActor.h"
32 #include "clitkDicomRT_ROI.h"
33 #include "ui_vvToolROIManager.h"
34
35 class vvROIActor;
36
37 //------------------------------------------------------------------------------
38 class vvToolROIManager:
39   public QWidget, 
40   public vvToolBase<vvToolROIManager>, 
41   public Ui::vvToolROIManager
42 {
43   Q_OBJECT
44   public:
45   vvToolROIManager(vvMainWindowBase* parent=0, Qt::WindowFlags f=Qt::Dialog);
46   virtual ~vvToolROIManager();
47
48   static void Initialize();
49   virtual void InputIsSelected(vvSlicerManager *m);
50
51   void AddImage(vvImage * binaryImage, std::string name, std::string filename, double BG, bool m_modeBG=true);
52   void UpdateAllContours();
53   void UpdateAllROIStatus();
54 #if __cplusplus > 199711L
55   virtual void SaveState(std::shared_ptr<QXmlStreamWriter> & m_XmlWriter);
56 #else
57   virtual void SaveState(std::auto_ptr<QXmlStreamWriter> & m_XmlWriter);
58 #endif
59   virtual void InitializeNewTool(bool ReadStateFlag);
60
61   public slots:
62   void AnImageIsBeingClosed(vvSlicerManager *);
63   void SelectedImageHasChanged(vvSlicerManager *);
64   void Open();
65   void OpenBinaryImage(QStringList & filenames);
66   void OpenDicomImage(std::string filaneme);
67   void SelectedItemChangedInTree();
68   void VisibleROIToggled(bool b);
69   void VisibleContourROIToggled(bool b);
70   void OpacityChanged(int v);
71   void ChangeColor();
72   void ChangeContourColor();
73   void ChangeContourWidth(int n);
74   void ChangeDepth(int n);
75   void AllVisibleROIToggled(int b);
76   void AllVisibleContourROIToggled(int b);
77   void ReloadCurrentROI();  
78   void close();
79   void RemoveROI();
80   vvSlicerManager * GetCurrentSlicerManager() { return mCurrentSlicerManager; }
81
82 protected:
83   Ui::vvToolROIManager ui;
84   vvSlicerManager * mCurrentSlicerManager; // need it because do not inherit from vvToolWidgetBase
85   vvImage * mCurrentImage;
86   vvMainWindowBase * mMainWindow;
87   int mIndexFirstTab;
88   bool mOpenFileBrowserFlag;
89   
90   int mNumberOfVisibleROI;
91   int mNumberOfVisibleContourROI;
92   static int nbTotalROI;
93
94   vtkSmartPointer<vtkLookupTable> mDefaultLUTColor;
95
96   QStringList mOpenedBinaryImageFilenames;
97   std::vector<clitk::DicomRT_ROI::Pointer> mROIList;
98   std::vector<QSharedPointer<vvROIActor> > mROIActorsList;
99
100   // Data for the widget Tree
101   std::vector< QSharedPointer<QTreeWidgetItem> > mTreeWidgetList;
102   std::map<clitk::DicomRT_ROI::Pointer, QTreeWidgetItem *> mMapROIToTreeWidget;
103   std::map<QTreeWidgetItem *, clitk::DicomRT_ROI::Pointer> mMapTreeWidgetToROI;
104   
105   // Data for current selected roi
106   clitk::DicomRT_ROI::Pointer mCurrentROI;
107   QSharedPointer<vvROIActor> mCurrentROIActor;
108   
109   // Data for XML Reader
110   void ReadXMLInformation();
111   void ReadXMLInformation_ROI();
112   uint mInitialImageIndex;
113   QStringList mROIFilenames;
114   std::vector<QSharedPointer<vvROIActor> > mROIActorsParamList;
115  
116 }; // end class vvToolROIManager
117 //------------------------------------------------------------------------------
118
119 #endif
120