]> Creatis software - creaContours.git/blob - lib/Interface_Icons_NDimensions/interfSegmentationPanels.cxx
*** empty log message ***
[creaContours.git] / lib / Interface_Icons_NDimensions / interfSegmentationPanels.cxx
1 #include "interfSegmentationPanels.h"
2 #include "interfMainPanel.h"
3
4 interfSegmentationPanelVTK::interfSegmentationPanelVTK(wxWindow * parent)
5 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
6 {
7         int sizeZ = interfMainPanel::getInstance()->GetImageDataSizeZ();
8         //int sizeZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ();
9         double range[2];
10         //_theViewPanel->getSceneManager()->GetImageDataRange(range);
11         interfMainPanel::getInstance()->GetImageDataRange(range);
12
13         wxButton *segmentationOneSliceBtn       = new wxButton(this,-1,_T("Current slice"), wxDefaultPosition, wxSize(200,35) );
14         wxButton *segmentationAllSliceBtn       = new wxButton(this,-1,_T("All slices") ,wxDefaultPosition, wxSize(200,35) );
15         _isovalue                                                       = new wxSlider(this, -1, 40 , (int)(range[0]), (int)(range[1]), wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
16         _sampling                                                       = new wxSlider(this, -1, 20 , 4, 50, wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
17         wxString lstOptions[3];
18         lstOptions[0]=_T("A");
19         lstOptions[1]=_T("B");
20         lstOptions[2]=_T("C");
21         methodRadiobox                                          = new wxRadioBox(this, -1, _T("Method (find ctrl. Points)"), wxDefaultPosition, wxSize(200,45), 3 , lstOptions,  3, wxRA_SPECIFY_COLS);
22         methodRadiobox->SetSelection(2);
23         _staticTextSegmentation                         = new wxStaticText(this,-1,_T("    "));
24
25         _mbarrange                                      =  new mBarRange(this,70, 65);
26         _mbarrange->SetMin(0);
27         _mbarrange->SetStart(0);
28
29         _mbarrange-> SetOrientation( true );
30         _mbarrange-> setActiveStateTo(true);
31         _mbarrange-> setVisibleLabels( true );
32         _mbarrange-> setDeviceEndMargin(10);
33         _mbarrange-> setRepresentedValues( 0 , sizeZ );
34         _mbarrange-> setDeviceBlitStart(10,10); 
35         _mbarrange-> setIfWithActualDrawed( false );
36         _mbarrange-> SetStart( 0 );
37         _mbarrange-> SetEnd( sizeZ );  
38
39
40         wxFlexGridSizer * sizer                         = new wxFlexGridSizer(1);
41         sizer -> Add( new wxStaticText(this,-1,_T("Isovalue (Gray level)"))  , 1, wxGROW );
42         sizer -> Add( _isovalue , 1, wxGROW );
43         sizer -> Add( methodRadiobox , 1, wxGROW );
44         sizer -> Add( new wxStaticText(this,-1,_T("Sampling (%)"))  , 1, wxGROW );
45         sizer -> Add( _sampling , 1, wxGROW );
46         sizer -> Add( segmentationOneSliceBtn , 1, wxGROW );
47         sizer -> Add( new wxStaticText(this,-1,_T(" "))  , 1, wxGROW );
48         sizer -> Add( _staticTextSegmentation  , 1, wxGROW );
49         sizer -> Add( segmentationAllSliceBtn , 1, wxGROW );
50         sizer -> Add( _mbarrange  , 1, wxGROW );
51
52         this->SetSizer( sizer );
53 //              panel->SetSize( sizePanel );
54         this->SetSize( wxDefaultSize );
55         this->SetAutoLayout( true );
56         this->Layout();
57         
58 //_segmentationFrame->SetEventHandler( this );
59         //segmentationOneSliceBtn->SetEventHandler( this );
60         //segmentationAllSliceBtn->SetEventHandler( this );
61         //panel->SetEventHandler(this);
62         Connect( segmentationOneSliceBtn->GetId(),   wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelVTK::onSegmentationOneSlice); 
63         Connect( segmentationAllSliceBtn->GetId(),   wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelVTK::onSegmentationAllSlice); 
64 }
65
66
67 interfSegmentationPanelVTK::~interfSegmentationPanelVTK()
68 {
69 }
70
71 /**
72         **      Responds to the events of the buttons, when the same panel is responsible for it. It gets the name
73         **      of the button corresponding to the method that has to be executed,
74         **      it uses attribute eventHandler to call the methods define by the application.
75         **      see setEventHandler(wxEventHandler*)
76         **/
77
78 void  interfSegmentationPanelVTK::onSegmentationPressedITK(wxCommandEvent& event){
79     if(segmentPanelITK == NULL){
80                 segmentPanelITK = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));
81                         
82
83                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
84                 segmentPanelITK->SetSizer(flexsizer, true);
85                 segmentPanelITK->SetAutoLayout( true ); 
86                                 
87                 wxPanel* panel = new wxPanel(this, -1);//contourevent->getSegmentationPanelITK(segmentPanelITK);
88         
89
90                 wxStaticText* stattext = new wxStaticText(segmentPanelITK, -1, wxString(_T("   Automatic ITK Segmentation   ")), wxDefaultPosition,
91                         wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
92
93                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
94                 flexsizer->Add(panel, wxEXPAND);
95                 segmentPanelITK->Layout();
96         }
97         interfMainPanel::getInstance()->showPanel(segmentPanelITK);
98         //contourevent->showAxis(true);
99         //axisshown = true;
100 }
101
102 void interfSegmentationPanelVTK::onSegmentationOneSlice( wxCommandEvent& event )
103 {
104
105
106         int     isovalue = _isovalue->GetValue();
107         int     sampling = _sampling->GetValue();
108         int method = methodRadiobox->GetSelection();
109         interfMainPanel::getInstance()->onSegmentationOneSlice(isovalue, sampling, method);
110         
111 }
112 void interfSegmentationPanelVTK::onSegmentationAllSlice( wxCommandEvent& event )
113 {
114
115         int minZ=_mbarrange->GetStart();
116         int maxZ=_mbarrange->GetEnd();
117
118         int                             isovalue        = _isovalue->GetValue();
119         int                             sampling        = _sampling->GetValue();
120         int method = methodRadiobox->GetSelection();
121
122
123         interfMainPanel::getInstance()->onSegmentationAllSlice(minZ, maxZ, isovalue, sampling, method);
124         
125 }
126
127 void interfSegmentationPanelVTK::setLabel(wxString tmpString){
128         _staticTextSegmentation->SetLabel(tmpString);
129 }
130 /**
131 ** start of new implementation
132 **      interfSegmentationPanelITK
133 **/
134 interfSegmentationPanelITK::interfSegmentationPanelITK(wxWindow * parent)
135 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
136 {
137         int sizeZ = interfMainPanel::getInstance()->GetImageDataSizeZ();
138         //int sizeZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ();
139         double range[2];
140         //_theViewPanel->getSceneManager()->GetImageDataRange(range);
141         interfMainPanel::getInstance()->GetImageDataRange(range);
142
143         wxButton *segmentationOneSliceBtn       = new wxButton(this,-1,_T("Current slice"), wxDefaultPosition, wxSize(200,35) );
144         wxButton *segmentationAllSliceBtn       = new wxButton(this,-1,_T("All slices") ,wxDefaultPosition, wxSize(200,35) );
145
146         Connect( segmentationOneSliceBtn->GetId(),   wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelITK::onSegmentationOneSlice); 
147         Connect( segmentationAllSliceBtn->GetId(),   wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelITK::onSegmentationAllSlice); 
148
149         _isovalue                                                       = new wxSlider(this, -1, 40 , (int)(range[0]), (int)(range[1]), wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
150         _sampling                                                       = new wxSlider(this, -1, 20 , 4, 50, wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
151         wxString lstOptions[3];
152         lstOptions[0]=_T("A");
153         lstOptions[1]=_T("B");
154         lstOptions[2]=_T("C");
155         methodRadiobox                                          = new wxRadioBox(this, -1, _T("Method (find ctrl. Points)"), wxDefaultPosition, wxSize(200,45), 3 , lstOptions,  3, wxRA_SPECIFY_COLS);
156         methodRadiobox->SetSelection(2);
157         _staticTextSegmentation                         = new wxStaticText(this,-1,_T("    "));
158
159         _mbarrange                                      =  new mBarRange(this,70, 65);
160         _mbarrange->SetMin(0);
161         _mbarrange->SetStart(0);
162
163         _mbarrange-> SetOrientation( true );
164         _mbarrange-> setActiveStateTo(true);
165         _mbarrange-> setVisibleLabels( true );
166         _mbarrange-> setDeviceEndMargin(10);
167         _mbarrange-> setRepresentedValues( 0 , sizeZ );
168         _mbarrange-> setDeviceBlitStart(10,10); 
169         _mbarrange-> setIfWithActualDrawed( false );
170         _mbarrange-> SetStart( 0 );
171         _mbarrange-> SetEnd( sizeZ );  
172
173
174         wxFlexGridSizer * sizer                         = new wxFlexGridSizer(1);
175         sizer -> Add( new wxStaticText(this,-1,_T("Isovalue (Gray level)"))  , 1, wxGROW );
176         sizer -> Add( _isovalue , 1, wxGROW );
177         sizer -> Add( methodRadiobox , 1, wxGROW );
178         sizer -> Add( new wxStaticText(this,-1,_T("Sampling (%)"))  , 1, wxGROW );
179         sizer -> Add( _sampling , 1, wxGROW );
180         sizer -> Add( segmentationOneSliceBtn , 1, wxGROW );
181         sizer -> Add( new wxStaticText(this,-1,_T(" "))  , 1, wxGROW );
182         sizer -> Add( _staticTextSegmentation  , 1, wxGROW );
183         sizer -> Add( segmentationAllSliceBtn , 1, wxGROW );
184         sizer -> Add( _mbarrange  , 1, wxGROW );
185
186         this->SetSizer( sizer );
187 //              panel->SetSize( sizePanel );
188         this->SetSize( wxDefaultSize );
189         this->SetAutoLayout( true );
190         this->Layout();
191         
192 }
193 interfSegmentationPanelITK::~interfSegmentationPanelITK(){
194
195 }
196
197 void interfSegmentationPanelITK::onSegmentationOneSlice( wxCommandEvent& event )
198 {
199
200
201         /*int                           isovalue        = _isovalue->GetValue();
202         int                             sampling        = _sampling->GetValue();
203         int method = methodRadiobox->GetSelection();
204         interfMainPanel::getInstance()->onSegmentationOneSlice(isovalue, sampling, method);*/
205         
206 }
207 void interfSegmentationPanelITK::onSegmentationAllSlice( wxCommandEvent& event )
208 {
209
210         /*int minZ=_mbarrange->GetStart();
211         int maxZ=_mbarrange->GetEnd();
212
213         int                             isovalue        = _isovalue->GetValue();
214         int                             sampling        = _sampling->GetValue();
215         int method = methodRadiobox->GetSelection();
216
217
218         interfMainPanel::getInstance()->onSegmentationAllSlice(minZ, maxZ, isovalue, sampling, method);*/
219         
220 }
221 //------------------------------------------------------------------------------------------------------------
222