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