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