]> Creatis software - creaContours.git/blob - lib/Interface_Icons_NDimensions/interfMainPanel.cxx
40456bf8f691ba68fffbc1038ab59ebedf7a9c90
[creaContours.git] / lib / Interface_Icons_NDimensions / interfMainPanel.cxx
1 #include "interfMainPanel.h"
2
3 /*
4 #include "interfNewContourMenu.h"
5 #include "interfIOMenu.h"
6 #include "interfEditMenu.h"
7 #include "interfDeleteMenu.h"
8 #include "interfToolsMenu.h"
9 #include "interfToolsSpreadPanel.h"
10 #include "interfMenuBar.h"
11 #include "interfSegmentationMenu.h"
12 */
13
14 interfMainPanel* interfMainPanel::interfmainpanel=NULL;
15 wxFrame* interfMainPanel::_newframe=NULL;
16
17 interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtHandler * evtHandler, std::string datadir)
18 : wxPanel(parent, -1, wxDefaultPosition, wxSize(sizex, sizey), wxBORDER_SUNKEN)
19 {
20
21         PANEL                           = "New Contour";
22         PANEL1                          = "I/O";
23         PANEL2                          = "Edit";
24         PANEL3                          = "Delete";
25         PANEL4                          = "Tools";  
26         PANEL5                          = "Segmentation";
27         segmentPanel            = NULL;
28         segmentPanelITK         = NULL;
29         configPanel                     = NULL;
30         spreadPanel                     = NULL;
31         infoWin                         = NULL;
32         infoPanel                       = NULL;
33         infoPanelMask           = NULL;
34         informationPanel        = NULL;
35         mirrorPanel                     = NULL;
36         thresholdPanel          = NULL;
37         currentWindow           = NULL;
38         
39         splitterwindow = new wxSplitterWindow(this,-1, wxDefaultPosition, wxSize(sizex, sizey), wxSP_3DSASH, wxString(_T("")));
40
41         splitterwindow->SetMinimumPaneSize( 10 );
42         sizey = sizey/8;
43
44         wxPanel* toolpanel = new wxPanel(splitterwindow, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T("")));
45
46         wxFlexGridSizer* flexsizer = new wxFlexGridSizer(6,2,1,1);      
47         toolpanel->SetSizer(flexsizer, true);
48         toolpanel->SetAutoLayout( true );
49
50         wxButton* b = getButton(toolpanel);
51         b->SetClientData(&PANEL);
52         wxButton* b1 = getButton(toolpanel);
53         b1->SetClientData(&PANEL1);
54         wxButton* b2 = getButton(toolpanel);
55         b2->SetClientData(&PANEL2);
56         wxButton* b3 = getButton(toolpanel);
57         b3->SetClientData(&PANEL3);
58         wxButton* b4 = getButton(toolpanel);
59         b4->SetClientData(&PANEL4);
60         wxButton* b5 = getButton(toolpanel);
61         b5->SetClientData(&PANEL5);
62
63         wxPanel* mentex = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T("")));
64         wxPanel* mentex1 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T("")));
65         wxPanel* mentex2 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T("")));
66         wxPanel* mentex3 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T("")));
67         wxPanel* mentex4 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T("")));
68         wxPanel* mentex5 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T("")));
69         
70         menubar = new interfNewContourMenu(mentex, sizex, sizey, evtHandler, datadir);          
71         menubar1 = new interfIOMenu(mentex1, sizex, sizey, evtHandler, datadir);        
72         menubar2 = new interfEditMenu(mentex2, sizex, sizey, evtHandler, datadir);      
73         menubar3 = new interfDeleteMenu(mentex3, sizex, sizey, evtHandler, datadir);    
74         menubar4 = new interfToolsMenu(mentex4, sizex,sizey, evtHandler, datadir);
75         menubar5 = new interfSegmentationMenu(mentex5, sizex,sizey, evtHandler, datadir);
76                 
77         statictext = getText(mentex, PANEL);    
78         statictext1 = getText(mentex1, PANEL1); 
79         statictext2 = getText(mentex2, PANEL2); 
80         statictext3 = getText(mentex3, PANEL3); 
81         statictext4 = getText(mentex4, PANEL4); 
82         statictext5 = getText(mentex5, PANEL5); 
83         
84         flexsizer->Add(b, wxFIXED_MINSIZE);
85         flexsizer->Add(setMenuTextSizer(mentex, menubar,statictext), wxFIXED_MINSIZE);
86
87         flexsizer->Add(b1, wxFIXED_MINSIZE);
88         flexsizer->Add(setMenuTextSizer(mentex1, menubar1,statictext1), wxFIXED_MINSIZE);
89         
90         flexsizer->Add(b2, wxFIXED_MINSIZE);
91         flexsizer->Add(setMenuTextSizer(mentex2, menubar2,statictext2), wxFIXED_MINSIZE);
92         
93         flexsizer->Add(b3, wxFIXED_MINSIZE);
94         flexsizer->Add(setMenuTextSizer(mentex3, menubar3,statictext3), wxFIXED_MINSIZE);
95         
96         flexsizer->Add(b4, wxFIXED_MINSIZE);
97         flexsizer->Add(setMenuTextSizer(mentex4, menubar4,statictext4), wxFIXED_MINSIZE);
98
99         flexsizer->Add(b5, wxFIXED_MINSIZE);
100         flexsizer->Add(setMenuTextSizer(mentex5, menubar5,statictext5), wxFIXED_MINSIZE);
101
102         toolpanel->Update();
103         toolpanel->Layout();
104
105         infoPanel = new wxPanel(splitterwindow, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString(_T("")));
106         wxFlexGridSizer* infosizer = new wxFlexGridSizer(1,1,2,2);      
107         infoPanel->SetSizer(infosizer, true);
108         infoPanel->SetAutoLayout( true );       
109                 
110         splitterwindow->Initialize(toolpanel);
111         splitterwindow->SetSashGravity(1);
112         splitterwindow->SplitHorizontally(toolpanel, infoPanel);        
113                 
114         Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
115         Connect(b1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
116         Connect(b2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
117         Connect(b3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
118         Connect(b4->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
119         Connect(b5->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
120
121         this->Layout();
122 }
123
124 interfMainPanel::~interfMainPanel(void)
125 {
126 }
127
128 interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, std::string datadir, wxEvtHandler * evtHandler){        
129
130         _newframe = new wxFrame(parent, -1, wxT(" Contour Tools "), wxPoint(25,50), wxSize(350,900),wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION |  wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT);
131         
132                                                                                                                                                                                 
133         if(interfmainpanel == NULL){
134                 interfmainpanel = new interfMainPanel(_newframe, 350, 900, evtHandler, datadir);
135         }
136
137         _newframe->Show(TRUE);
138         return interfmainpanel;
139 }
140
141 interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, wxEvtHandler * evtHandler){     
142
143         _newframe = new wxFrame(parent, -1, wxT(" Contour Tools "), wxPoint(25,50), wxSize(350,900),wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION |  wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT );
144
145         if(interfmainpanel == NULL){
146                 interfmainpanel = new interfMainPanel(_newframe, 350, 900, evtHandler);
147         }
148
149         _newframe->Show(TRUE);
150         return interfmainpanel;
151 }
152 bool interfMainPanel::Show(bool show){
153         return _newframe->Show(show);
154 }
155 interfMainPanel* interfMainPanel::getInstance()
156 {       
157
158         return interfmainpanel;
159 }
160
161 void interfMainPanel :: resetInstance()
162 {
163         //delete interfmainpanel;
164         delete _newframe;
165         interfmainpanel = NULL;
166 }
167
168 wxPanel* interfMainPanel::initializeToolsPanel(wxWindow* parent, int sizex, int sizey, wxEvtHandler * evtHandler){
169
170
171         wxPanel* panel = new wxPanel(parent, -1, wxDefaultPosition, wxSize(sizex, sizey), wxBORDER_SUNKEN, wxString(_T("Spread")));
172
173         wxFlexGridSizer* flexsizer = new wxFlexGridSizer(2,1,2,2)       ;
174         panel->SetSizer(flexsizer, true);
175         panel->SetAutoLayout( true );
176
177         interfToolsMenu* menu = new interfToolsMenu(panel, sizex, sizey, evtHandler);
178         toolspread = new interfToolsSpreadPanel(panel, sizex, 300, evtHandler);
179
180         flexsizer->Add(menu, wxFIXED_MINSIZE);
181         flexsizer->Add(toolspread, wxFIXED_MINSIZE);
182         
183         panel->Layout();        
184         
185
186         return panel;
187 }
188
189
190 /**
191 **      Adds a new checkbox to the scrolledwindow using the checkboxsizer
192 **      @Params id of contour
193 **      
194 **/
195 void interfMainPanel::addContourCheckBox(std::string id){
196         toolspread->addContourCheckBox(id);
197 }
198
199 /**
200 **      Removes a checkbox from the list of checkboxes in the flexsizer (checkboxsizer)
201 **      @Params id of contour
202 **      
203 **/
204 void interfMainPanel::removeContourCheckBox(std::string id){
205         toolspread->removeContourCheckBox(id);
206 }
207
208 void interfMainPanel::onActionButtonPressed1( wxCommandEvent& event ){
209         //((interfToolsMenu*)menubar4)->hideAxis();
210         wxButton* b = (wxButton*)event.GetEventObject();
211         wxPanel* dmenu;
212         wxStaticText* text;
213         std::string dstring = *((std::string*) b->GetClientData());
214         int sizechange=0;
215
216
217         if(dstring.compare(PANEL)==0){
218                 dmenu = menubar;
219                 text = statictext;
220         }else if(dstring.compare(PANEL1)==0 ){
221                 dmenu = menubar1;       
222                 text = statictext1;
223         }else if(dstring.compare(PANEL2)==0){
224                 dmenu = menubar2;
225                 text = statictext2;
226         }else if(dstring.compare(PANEL3)==0){
227                 dmenu = menubar3;
228                 text = statictext3;
229         }else if(dstring.compare(PANEL4)==0){
230                 dmenu = menubar4;
231                 text = statictext4;
232         }else if(dstring.compare(PANEL5)==0){
233                 dmenu = menubar5;
234                 text = statictext5;
235         }
236
237         if(wxStrcmp(b->GetLabel(),_T("+"))==0 ){
238                 dmenu->Show(true);
239                 sizechange = 1;
240                 b->SetLabel(_T("-"));
241         }else{
242                 dmenu->Show(false);             
243                 sizechange = -1;
244                 b->SetLabel(_T("+"));
245         }       
246         
247         sizechange *= dmenu->GetSize().GetHeight();
248         splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+sizechange);
249         
250         this->Layout();
251         this->Refresh();
252 }
253
254 wxStaticText* interfMainPanel::getText(wxWindow* parent, std::string nom){
255         return new wxStaticText(parent, -1, wxString(nom.c_str(),wxConvUTF8), wxDefaultPosition, 
256                                                         wxDefaultSize, wxALIGN_CENTRE, wxString(nom.c_str(),wxConvUTF8));
257 }
258
259 wxButton* interfMainPanel::getButton(wxWindow* parent){
260         wxButton* b = new wxButton(parent, -1, wxString(_T("-")), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, 
261                                                                 wxDefaultValidator, wxString(_T("-"))); 
262         return b;
263 }
264
265 wxPanel* interfMainPanel::setMenuTextSizer(wxWindow* parent, wxPanel* panel, wxStaticText* text){
266
267         wxFlexGridSizer* flexsizer = new wxFlexGridSizer(2,1,2,2);      
268         parent->SetSizer(flexsizer, true);
269         parent->SetAutoLayout( true );
270
271         flexsizer->Add(text, wxFLEX_GROWMODE_ALL);
272         flexsizer->Add(panel, wxFLEX_GROWMODE_ALL);
273
274         parent->Layout();
275         return (wxPanel*)parent;
276         
277 }
278
279 /**
280 **      Shows the panel in the 
281 **/
282 void interfMainPanel::showPanel(wxWindow* panel)
283 {
284         wxContourMainFrame::getInstance()->showAxis(false);
285         wxSizer* sizer = infoPanel->GetSizer();
286
287         if(currentWindow != NULL){
288                 currentWindow->Hide();
289                 sizer->Remove(currentWindow);
290         }       
291         sizer->Add(panel);
292     currentWindow = panel;
293         currentWindow->Show(true);
294
295         splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+1);
296         splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()-1);
297
298         infoPanel->Layout();
299         infoPanel->Refresh();
300         this->Layout();
301         this->Refresh();
302 }
303
304 /**
305 **      Hide the panel in the lower box
306 **/
307 void interfMainPanel::hidePanel( ){
308         wxContourMainFrame::getInstance()->showAxis(false);
309         wxSizer* sizer = infoPanel->GetSizer();
310
311         if(currentWindow != NULL){
312                 currentWindow->Hide();
313                 sizer->Remove(currentWindow);
314         }
315         wxPanel * emptyPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));
316         sizer->Add(emptyPanel);
317     currentWindow = emptyPanel;
318         currentWindow->Show(true);
319
320         splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+1);
321         splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()-1);
322
323         infoPanel->Layout();
324         infoPanel->Refresh();
325         this->Layout();
326         this->Refresh();
327 }
328
329 /**
330 **      Gets the Information panel
331 **/
332 wxPanel* interfMainPanel::getInfoPanel(){
333         return infoPanel;
334 }
335
336 void interfMainPanel::onCreateContourSpline( ){
337         wxContourMainFrame::getInstance()->showAxis(false);
338         wxContourMainFrame::getInstance()->onCreateContourSpline();
339 }
340 void interfMainPanel::onCreateContourRectangle( ){
341         wxContourMainFrame::getInstance()->showAxis(false);
342     wxContourMainFrame::getInstance()->onCreateContourRectangle();
343 }
344 void interfMainPanel::onCreateContourCircle( ){
345         wxContourMainFrame::getInstance()->showAxis(false);
346     wxContourMainFrame::getInstance()->onCreateContourCircle();
347 }
348 void interfMainPanel::onCreateContourLine( ){
349         wxContourMainFrame::getInstance()->showAxis(false);
350     wxContourMainFrame::getInstance()->onCreateContourLine();
351 }
352 void interfMainPanel::onCreateContoursBullEye(wxPanel* panBull){
353         wxContourMainFrame::getInstance()->showAxis(false);
354         wxContourMainFrame::getInstance()->onCreateContourBullEye(panBull);
355 }
356 void interfMainPanel::onDeleteContour(){
357         wxContourMainFrame::getInstance()->showAxis(false);
358         wxContourMainFrame::getInstance()->onDeleteContour();
359 }
360 void interfMainPanel::onDeleteContoursActSlice(){
361         wxContourMainFrame::getInstance()->showAxis(false);
362         wxContourMainFrame::getInstance()->onDeleteContoursActSlice();
363 }
364 void interfMainPanel::onDeleteAllContours(){
365         wxContourMainFrame::getInstance()->showAxis(false);
366         wxContourMainFrame::getInstance()->onDeleteAllContours();
367 }
368
369 void interfMainPanel::onCopy(){
370         wxContourMainFrame::getInstance()->onCopy();
371 }
372 void interfMainPanel::onPaste(){
373         wxContourMainFrame::getInstance()->onPaste();
374 }
375 void interfMainPanel::onUndo(){
376         wxContourMainFrame::getInstance()->onUndo();
377 }
378 void interfMainPanel::onRedo(){
379         wxContourMainFrame::getInstance()->onRedo();
380 }
381 void interfMainPanel::onLoad(){
382         wxContourMainFrame::getInstance()->onLoad();
383 }
384 void interfMainPanel::onSave(){
385         wxContourMainFrame::getInstance()->     onSave();
386 }
387 void interfMainPanel::RefreshInterface(){
388         wxContourMainFrame::getInstance()->RefreshInterface();
389 }
390
391 vtkImageData* interfMainPanel::getImageData(){
392         return wxContourMainFrame::getInstance()->getImageData();
393 }
394
395 void interfMainPanel::getImageRange(double  range[2] )
396 {
397         vtkImageData * img = getImageData();
398         img->GetScalarRange(range);
399 }
400
401 void interfMainPanel::onSegmentationOneSlice(int isovalue,int sampling,int method)
402 {
403         wxContourMainFrame::getInstance()->onSegmentationOneSlice(isovalue, sampling, method);
404 }
405
406 void interfMainPanel::onSegmentationOneSliceITK(wxString distance, wxString sigma, wxString alfa, wxString beta, wxString propagation, wxString iterations, wxString inflation){
407         wxContourMainFrame::getInstance()->onSegmentationOneSliceITK(distance, sigma, alfa, beta, propagation, iterations, inflation);
408 }
409
410 int interfMainPanel::GetImageDataSizeZ(){
411         return wxContourMainFrame::getInstance()->GetImageDataSizeZ();
412 }
413
414 void interfMainPanel::onSegmentationAllSlice(int minZ,int maxZ,int isovalue,int sampling,int method){
415         wxContourMainFrame::getInstance()->onSegmentationAllSlice(minZ, maxZ,isovalue,sampling,method);
416 }
417
418 void interfMainPanel::setLabelSegmentationPanelVTK(wxString tmpString){ 
419     ((interfSegmentationPanelVTK*)segmentationPanel)->setLabel(tmpString);
420 }
421 void interfMainPanel::onSegmentationPressed(){
422         if(segmentPanel == NULL){
423                 segmentPanel = new wxPanel(getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));
424                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
425                 segmentPanel->SetSizer(flexsizer, true);
426                 segmentPanel->SetAutoLayout( true );    
427                 segmentPanel->SetEventHandler(this);
428                 
429                 //wxPanel* panel = contourevent->getSegmentationPanel(segmentPanel);
430                 segmentationPanel = new interfSegmentationPanelVTK(segmentPanel);
431         
432
433                 wxStaticText* stattext = new wxStaticText(segmentPanel, -1, wxString(_T("   Automatic Segmentation   ")), wxDefaultPosition,
434                         wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
435
436                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
437                 flexsizer->Add(segmentationPanel, wxEXPAND);
438                 segmentPanel->Layout();
439         }
440         showPanel(segmentPanel);
441         wxContourMainFrame::getInstance()->showAxis(true);
442         axisshown = true;
443 }
444
445 void interfMainPanel::onSegmentationPressedITK(){
446     if(segmentPanelITK == NULL){
447                 segmentPanelITK = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));
448                         
449
450                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
451                 segmentPanelITK->SetSizer(flexsizer, true);
452                 segmentPanelITK->SetAutoLayout( true ); 
453                 //segmentPanelITK->SetEventHandler(this->contourevent);
454                 
455                 //wxPanel* panel = contourevent->getSegmentationPanelITK(segmentPanelITK);
456                 wxPanel* panel = new interfSegmentationPanelITK(segmentPanelITK);
457         
458
459                 wxStaticText* stattext = new wxStaticText(segmentPanelITK, -1, wxString(_T("   Automatic ITK Segmentation   ")), wxDefaultPosition,
460                         wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
461
462                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
463                 flexsizer->Add(panel, wxEXPAND);
464                 segmentPanelITK->Layout();
465         }
466         showPanel(segmentPanelITK);
467         wxContourMainFrame::getInstance()->showAxis(true);
468         axisshown = true;
469 }
470
471 void interfMainPanel::onRigidPressed(){
472         wxContourMainFrame::getInstance()->onRigidPressed();
473 }
474
475 void interfMainPanel::onWidthOfContour(double width){    
476         wxContourMainFrame::getInstance()->onWidthOfContour(width);
477 }
478
479 int interfMainPanel::getColorWindow(){
480         return wxContourMainFrame::getInstance()->getColorWindow();
481 }
482 int interfMainPanel::getWindowLevel(){
483         return wxContourMainFrame::getInstance()->getWindowLevel();
484 }
485 void interfMainPanel::onBrigthnessColorWindowLevel(int colorwindow,int windowlevel){
486         wxContourMainFrame::getInstance()->onBrigthnessColorWindowLevel(colorwindow, windowlevel);
487 }
488
489 void interfMainPanel::onInterpolation(bool interpolate)
490 {
491         wxContourMainFrame::getInstance()->onInterpolation(interpolate);
492 }
493
494
495 void interfMainPanel::onConfigurationPressed(){
496         if(configPanel == NULL){
497                 configPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString(_T("")));
498                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
499                 configPanel->SetSizer(flexsizer, true);
500                 configPanel->SetAutoLayout( true );     
501                 //configPanel->SetEventHandler(this->contourevent);
502                 wxPanel* panel = new interfConfigurationPanel(configPanel);
503                 wxStaticText* stattext = new wxStaticText(configPanel, -1, wxString(_T("   Interface Configuration   ")), wxDefaultPosition,
504                         wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
505                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
506                 flexsizer->Add(panel, wxEXPAND);
507                 configPanel->Layout();
508         }
509         showPanel(configPanel);
510 }
511
512 void interfMainPanel::onSpreadPressed(){
513     if(spreadPanel==NULL){
514
515                 spreadPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));
516                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
517                 spreadPanel->SetSizer(flexsizer, true);
518                 spreadPanel->SetAutoLayout( true );     
519                 //spreadPanel->SetEventHandler(this->contourevent);
520                 
521                 //wxPanel* panel = contourevent->getSpreadPanel(spreadPanel);
522                 panelSpread = new interfSpreadPanel(spreadPanel);
523         
524
525                 wxStaticText* stattext = new wxStaticText(spreadPanel, -1, wxString(_T("   Automatic Spread   ")), wxDefaultPosition,
526                         wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
527
528                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
529                 flexsizer->Add(panelSpread, wxEXPAND);
530                 spreadPanel->Layout();
531         }       
532         showPanel(spreadPanel);
533         //hideAxis();
534 }
535
536 void interfMainPanel::resetAppend(){
537         wxContourMainFrame::getInstance()->resetAppend();
538 }
539
540 void interfMainPanel::onSpreadAdd(){
541         wxContourMainFrame::getInstance()->onSpreadAdd();
542 }
543
544 void interfMainPanel::appendStringSpread(std::string val){
545     panelSpread->appendStringSpread(val);
546 }
547
548 void interfMainPanel::onSpreadGo(int type){
549         wxContourMainFrame::getInstance()->onSpreadGo(type);
550 }
551 void interfMainPanel::setStringSpread(std::string stringtemp){
552         panelSpread->setStringSpread(stringtemp);
553 }
554
555 void interfMainPanel::onInformationPressed(){
556         
557         // Statistics frame
558         if(infoWin ==NULL){
559                 infoWin                                         = new wxFrame (this, -1,_T("  Statistics  "), wxDefaultPosition, wxDefaultSize, wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION |  wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT | wxRESIZE_BORDER  );
560                 infoWin->SetSize( wxSize(825,650) );
561                 
562                 wxSize sizepanel(825,675);
563                 informationPanel                                                                        = new interfInformationPanel(infoWin);//contourevent->getInformationPanel(infoWin);
564
565                 wxBoxSizer * sizerPanel         = new wxBoxSizer(wxHORIZONTAL);
566                 sizerPanel -> Add( informationPanel     , 1, wxEXPAND ,0);
567
568                 infoWin->SetSizer( sizerPanel );
569                 infoWin->SetAutoLayout( true );
570                 infoWin->Layout();
571                 infoWin->Show();
572         }else {
573
574                 if (infoWin->IsShown()==true)
575                 {
576                         infoWin->Show(false);
577                 } else  {
578                         //contourevent->FillGridWithContoursInformation();
579                         infoWin->Show(true);
580                 }
581         }       
582         
583         // mask view control panel
584         if(infoPanelMask == NULL){
585                 infoPanelMask = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString(_T("")));
586                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
587                 infoPanelMask->SetSizer(flexsizer, true);
588                 infoPanelMask->SetAutoLayout( true );   
589                 //configPanel->SetEventHandler(this->contourevent);
590                 wxPanel *panel = wxContourMainFrame::getInstance()->getMaskImageViewPanel( infoPanelMask );                             
591                 wxStaticText* stattext = new wxStaticText(infoPanelMask, -1, wxString(_T("   Mask segmentation    ")), wxDefaultPosition,
592                                                                                                   wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
593                 
594                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
595                 
596                 flexsizer->Add(panel, wxEXPAND);
597                 infoPanelMask->Layout();
598                 
599         }
600         showPanel(infoPanelMask);
601         wxContourMainFrame::getInstance()->changeInstant();
602 }
603
604 void interfMainPanel::getInstantVector(std::vector<int>& tempVector){
605         wxContourMainFrame::getInstance()->getInstantVector(tempVector);
606 }
607
608 std::vector<std::string> interfMainPanel::getOutlinesName(int slide){
609         return wxContourMainFrame::getInstance()->getOutlinesName(slide);
610 }
611
612 void interfMainPanel::onInformationContourLabels(int typeContourGroup,int selection,int minZ,int maxZ,int grayRangeMin,int grayRangeMax){
613         wxContourMainFrame::getInstance()->onInformationContourLabels(typeContourGroup, selection, minZ, maxZ,grayRangeMin,grayRangeMax);
614 }
615
616 void interfMainPanel::setStringInfoPanel(wxString tmpString){
617         if(informationPanel!=NULL){
618                 ((interfInformationPanel*)informationPanel)->setStringInfoPanel(tmpString);
619         }
620 }
621
622 void interfMainPanel::setRowLabelInfoPanel(int z, wxString tempString){
623         ((interfInformationPanel*)informationPanel)->setRowLabelInfoPanel(z, tempString);
624 }
625
626 int interfMainPanel::getNumberColsInformationPanel(){
627         return ((interfInformationPanel*)informationPanel)->getNumberCols();
628 }
629
630 void interfMainPanel::appendColsInformationPanel(int _numberOfVariablesStatistics){
631         ((interfInformationPanel*)informationPanel)->appendCols(_numberOfVariablesStatistics);
632 }
633
634 void interfMainPanel::setCellValueInfoPanel(int z,int tmpIntA,wxString tempString){
635         ((interfInformationPanel*)informationPanel)->setCellValue(z, tmpIntA, tempString);
636 }
637
638 void interfMainPanel::setColLableInfoPanel(int tmpIntB,wxString tmpTitleString){
639         ((interfInformationPanel*)informationPanel)->setColLabel(tmpIntB, tmpTitleString);
640
641 }
642
643 void interfMainPanel::onSaveResults(std::string directory,std::string namefile, std::string filename, 
644                                                                         int typeContourGroup, int selection, int minZ, int maxZ ,bool XYZValues, bool contourImage, bool statistics)
645 {
646         wxContourMainFrame::getInstance()->onSaveResults(directory, namefile, filename, 
647                 typeContourGroup, selection, minZ,maxZ, XYZValues, contourImage, statistics);
648 }
649
650 wxString interfMainPanel::getCellValue(int j,int i){
651         return ((interfInformationPanel*)informationPanel)->getCellValue(j, i );
652 }
653
654 void interfMainPanel::onSnakePressed()
655 {
656         axisshown=false;
657         wxContourMainFrame::getInstance()->showAxis(axisshown);
658     wxContourMainFrame::getInstance()->onSnakePressed();
659 }
660
661 void interfMainPanel::onMirrorPressed(){
662     if(mirrorPanel==NULL)
663         {
664
665                 mirrorPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));
666                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
667                 mirrorPanel->SetSizer(flexsizer, true);
668                 mirrorPanel->SetAutoLayout( true );     
669                 panelMirror = new interfMirrorPanel(mirrorPanel);
670         
671                 wxStaticText* stattext = new wxStaticText(mirrorPanel, -1, wxString(_T("   Mirroring Tool   ")), wxDefaultPosition,
672                         wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
673
674                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
675                 flexsizer->Add(panelMirror, wxEXPAND);
676                 mirrorPanel->Layout();
677
678                 refLineShown=true;
679                 wxContourMainFrame::getInstance()->referenceLine();
680         }       
681
682         else
683         {
684
685                 if (!refLineShown)
686                 {
687                         wxContourMainFrame::getInstance()->refLineShow();
688                         refLineShown=true;
689                 }
690         }
691
692         showPanel(mirrorPanel);
693 }
694
695 void interfMainPanel::onMirror()
696 {
697         wxContourMainFrame::getInstance()->onMirror();
698 }
699
700 void interfMainPanel::onMirrorAxisShow()
701 {
702         if (!refLineShown)
703         {
704                 wxContourMainFrame::getInstance()->refLineShow();
705                 refLineShown=true;
706         }
707 }
708
709 void interfMainPanel::onMirrorAxisHide()
710 {
711         if (refLineShown)
712         {
713                 wxContourMainFrame::getInstance()->refLineHide();
714                 refLineShown=false;
715         }
716 }
717
718 void interfMainPanel::onMirrorChangeWidth(int width)
719 {
720         wxContourMainFrame::getInstance()->refLineChangeWidth(width);
721 }
722
723
724
725 //EED01
726 void interfMainPanel::onThresholdPressed()
727 {
728         
729         // Threshold view control panel
730         if(thresholdPanel == NULL){
731                 thresholdPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString(_T("")));
732                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
733                 thresholdPanel->SetSizer(flexsizer, true);
734                 thresholdPanel->SetAutoLayout( true );  
735                 //configPanel->SetEventHandler(this->contourevent);
736                 wxPanel *panel = wxContourMainFrame::getInstance()->getThresholdImageViewPanel( thresholdPanel );                               
737                 wxStaticText* stattext = new wxStaticText(thresholdPanel, -1, wxString(_T("   Threshold segmentation    ")), wxDefaultPosition,
738                                                                                                   wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
739                 
740                 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
741                 
742                 flexsizer->Add(panel, wxEXPAND);
743                 thresholdPanel->Layout();
744                 
745         }
746         showPanel(thresholdPanel);
747         wxContourMainFrame::getInstance()->changeInstant();
748 }
749
750
751 void interfMainPanel::ShowResultImages(int typeContourGroup, int selection, int minZ, int maxZ)
752 {
753         wxContourMainFrame::getInstance()->ShowResultImages(typeContourGroup, selection, minZ, maxZ);
754 }
755
756
757 void interfMainPanel::SetContourGroup(int contourGroup)
758 {
759         wxContourMainFrame::getInstance()->SetContourGroup( contourGroup);
760 }