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