]> Creatis software - creaContours.git/blob - lib/Interface_Icons_NDimensions/interfToolsPanels.cxx
Changes with manualBaseModel. It improves the functionality with the new
[creaContours.git] / lib / Interface_Icons_NDimensions / interfToolsPanels.cxx
1 #include "interfToolsPanels.h"
2 #include "interfMainPanel.h"
3
4 interfConfigurationPanel::interfConfigurationPanel(wxWindow * parent)
5 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
6 {
7 //      wxPanel *panel                                                  = new wxPanel(parent,-1,wxDefaultPosition, wxDefaultSize,wxNO_BORDER, wxString(_T("")));
8         _withOfContourLine                                              = new wxSlider(this, -1, 1 , 1, 10, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
9
10         double range[2];
11         interfMainPanel::getInstance()->getImageRange(range);
12         //this->_theViewPanel->getSceneManager()->GetImageDataRange(range);
13
14         //wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)this->_theViewPanel->getWxVtkBaseView();
15         //vtkImageViewer2 *imageviewer = wxvtk2dbaseview->_imageViewer2XYZ->GetVtkImageViewer2();
16         //int colorwindow = (int)imageviewer->GetWindowLevel()->GetLevel();
17         //int windowlevel = (int)imageviewer->GetWindowLevel()->GetWindow();    
18
19         int colorwindow = interfMainPanel::getInstance()->getColorWindow();
20         int windowlevel = interfMainPanel::getInstance()->getWindowLevel();
21
22         int min = (int)floor (range[0]);
23         int max = (int)ceil (range[1]);
24
25         
26         _brithtnessWindowLevel                                  = new wxSlider(this, -1, windowlevel , min, max, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
27         _brithtnessColorLevel                                   = new wxSlider(this, -1, colorwindow , min, max, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
28
29         _interpolationCheckBox = new wxCheckBox(this, -1, _T("Image interpolation") );
30         _interpolationCheckBox->SetValue(true);         
31
32         Connect( _withOfContourLine->GetId(),     wxEVT_SCROLL_CHANGED,           (wxObjectEventFunction) &interfConfigurationPanel::onWidthOfContour); 
33         Connect( _withOfContourLine->GetId(),     wxEVT_SCROLL_THUMBTRACK,        (wxObjectEventFunction) &interfConfigurationPanel::onWidthOfContour); 
34
35         Connect( _brithtnessWindowLevel->GetId(), wxEVT_SCROLL_CHANGED,           (wxObjectEventFunction) &interfConfigurationPanel::onBrigthnessColorWindowLevel); 
36         Connect( _brithtnessWindowLevel->GetId(), wxEVT_SCROLL_THUMBTRACK,        (wxObjectEventFunction) &interfConfigurationPanel::onBrigthnessColorWindowLevel); 
37         Connect( _brithtnessColorLevel->GetId() , wxEVT_SCROLL_CHANGED,           (wxObjectEventFunction) &interfConfigurationPanel::onBrigthnessColorWindowLevel); 
38         Connect( _brithtnessColorLevel->GetId() , wxEVT_SCROLL_THUMBTRACK,        (wxObjectEventFunction) &interfConfigurationPanel::onBrigthnessColorWindowLevel); 
39         Connect( _interpolationCheckBox->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction) &interfConfigurationPanel::OnInterpolation);
40
41         wxFlexGridSizer * sizer                                 = new wxFlexGridSizer(1);
42         sizer -> Add( new wxStaticText(this,-1,_T("Contour width"))  , 1, wxGROW );
43         sizer -> Add( _withOfContourLine                , 1, wxGROW );
44         sizer -> Add( new wxStaticText(this,-1,_T(" "))  , 1, wxGROW );
45         sizer -> Add( new wxStaticText(this,-1,_T(" "))  , 1, wxGROW );
46         sizer -> Add( new wxStaticText(this,-1,_T("Brightness of the image"))  , 1, wxGROW );
47         sizer -> Add( new wxStaticText(this,-1,_T("--Window level--"))  , 1, wxGROW );
48         sizer -> Add( _brithtnessWindowLevel            , 1, wxGROW );
49         sizer -> Add( new wxStaticText(this,-1,_T("--Color level--"))  , 1, wxGROW );
50         sizer -> Add( _brithtnessColorLevel, 1, wxGROW );
51         sizer -> Add( new wxStaticText(this,-1,_T(" "))  , 1, wxGROW );
52         sizer -> Add( new wxStaticText(this,-1,_T(" "))  , 1, wxGROW );
53         sizer -> Add( _interpolationCheckBox            , 1, wxGROW );
54
55         this->SetSizer( sizer );
56         //JCP 13-10-08
57         //panel->SetSize( sizepanel );
58         //13-10-08
59         this->SetAutoLayout( true );
60         this->Layout();
61         
62 }
63
64
65 interfConfigurationPanel::~interfConfigurationPanel()
66 {
67 }
68
69 void interfConfigurationPanel::onWidthOfContour(wxScrollEvent& event){
70
71     double width = (double)_withOfContourLine->GetValue() / 2.0;
72         interfMainPanel::getInstance()->onWidthOfContour(width);
73 }
74
75 void interfConfigurationPanel::onBrigthnessColorWindowLevel(wxScrollEvent& event){
76         int colorwindow                         = _brithtnessColorLevel->GetValue();
77         int windowlevel                         = _brithtnessWindowLevel->GetValue();
78
79
80         interfMainPanel::getInstance()->onBrigthnessColorWindowLevel(colorwindow, windowlevel);
81
82 }
83
84 void interfConfigurationPanel::OnInterpolation(wxCommandEvent& event)
85 {
86         
87         interfMainPanel::getInstance()->onInterpolation(_interpolationCheckBox->GetValue());
88         
89         
90 }
91
92 /**
93 ** Begin of the spread panel
94 **/
95
96 interfSpreadPanel::interfSpreadPanel(wxWindow* parent)
97 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
98 {
99
100         //wxPanel *panel                                = new wxPanel(parent,-1);
101
102         //_contourPropagation                   = new ContourPropagation();
103
104         //wxPanel *panel                                                        = new wxPanel(parent,-1,wxDefaultPosition, wxDefaultSize,wxNO_BORDER, wxString("",wxConvUTF8));
105
106         wxButton *spreadResetBtn        = new wxButton(this,-1,_T("Reset"),wxDefaultPosition, wxDefaultSize );
107         wxButton *spreadAddBtn          = new wxButton(this,-1,_T("Add"),wxDefaultPosition, wxDefaultSize);
108
109         wxString lstOptions[3];
110         lstOptions[0]=_T("A");
111         lstOptions[1]=_T("B");
112         lstOptions[2]=_T("C");
113         _spreadMethodRadiobox                                           = new wxRadioBox(this, -1, _T("Method (find ctrl. Points)"), wxDefaultPosition, wxDefaultSize, 3 , lstOptions,  3, wxRA_SPECIFY_COLS);
114         _spreadMethodRadiobox->SetSelection(2);
115
116         wxButton *spreadGoBtn           = new wxButton(this,-1,_T("Go"),wxDefaultPosition, wxDefaultSize);
117         _staticTextSpread                       = new wxStaticText(this,-1,_T("    "));
118
119         _wxtextctrlSpread           = new wxTextCtrl(this,-1, _T(""),wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE );
120         _wxtextctrlSpread->SetEditable(false);
121         
122         Connect( spreadResetBtn->GetId(),       wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSpreadPanel::onSpreadReset ); 
123         Connect( spreadAddBtn->GetId(),         wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSpreadPanel::onSpreadAdd ); 
124         Connect( spreadGoBtn->GetId(),          wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSpreadPanel::onSpreadGo ); 
125
126         wxFlexGridSizer * sizer         = new wxFlexGridSizer(1);
127         sizer -> Add( spreadResetBtn            , 1, wxGROW );
128         sizer -> Add( spreadAddBtn                      , 1, wxGROW );
129         sizer -> Add( _spreadMethodRadiobox     , 1, wxGROW );
130         sizer -> Add( spreadGoBtn                       , 1, wxGROW );
131         sizer -> Add( _staticTextSpread         , 1, wxGROW );
132         sizer -> Add( _wxtextctrlSpread         , 1, wxGROW );
133
134
135         this->SetSizer( sizer );
136         //this->SetSize( wxDefaultSize );
137         this->SetAutoLayout( true );
138         this->Layout();
139         //return panel;
140 }
141
142 interfSpreadPanel::~interfSpreadPanel(){
143 }
144
145 void interfSpreadPanel::onSpreadReset(wxCommandEvent& event){
146         setStringSpread("   ");
147         _wxtextctrlSpread->SetValue(wxString("",wxConvUTF8));
148         interfMainPanel::getInstance()->resetAppend();  
149 }
150 void interfSpreadPanel::onSpreadAdd(wxCommandEvent& event){
151         interfMainPanel::getInstance()->onSpreadAdd();
152 }
153 void interfSpreadPanel::onSpreadGo(wxCommandEvent& event){
154
155
156         setStringSpread("   ");
157         int typeMethodFindCtrlPoints=_spreadMethodRadiobox->GetSelection();
158
159         interfMainPanel::getInstance()->onSpreadGo(typeMethodFindCtrlPoints);
160
161 }
162
163 void interfSpreadPanel::appendStringSpread(std::string val){
164         /* // if */
165         wxString newstring;
166         //newstring.Printf("%s %d -",_wxtextctrlSpread->GetValue(), actualSlice );
167         newstring.append(wxString(_wxtextctrlSpread->GetValue(),wxConvUTF8));
168         newstring.append(wxString(" ",wxConvUTF8));
169         newstring.append(wxString(val.c_str(),wxConvUTF8));
170         _wxtextctrlSpread->SetValue(newstring);
171 }
172
173 void interfSpreadPanel::setStringSpread(std::string stringtemp){
174
175         wxString newstring(stringtemp.c_str(),wxConvUTF8);
176         //_wxtextctrlSpread->SetEditable(true);
177         _staticTextSpread->SetLabel(newstring);
178         //_wxtextctrlSpread->SetEditable(false);
179 }
180
181 /**
182 ** Begin of information panel
183 **/
184 interfInformationPanel::interfInformationPanel(wxWindow * parent)
185 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
186 {
187         //wxPanel *panel                                                                        = new wxPanel(parent,-1,wxDefaultPosition, wxDefaultSize,wxTAB_TRAVERSAL);
188         wxString lstOptions[4];
189         lstOptions[0]=_T("Current Slice");
190         lstOptions[1]=_T("Range Slices");
191 //      lstOptions[2]=_T("All Slices");
192         _informationRadiobox                                                    = new wxRadioBox(this, -1, _T("Slice analysis"), wxDefaultPosition, wxSize(270,45), 2 , lstOptions,  2, wxRA_SPECIFY_COLS);     
193
194         
195         wxString lstOptContOperation[5];
196         lstOptContOperation[0]=_T("AND");
197         lstOptContOperation[1]=_T("OR");
198         lstOptContOperation[2]=_T("XOR");
199         lstOptContOperation[3]=_T("ALL");
200         _radiolstboxContourGroup                                                = new wxRadioBox(this, -1, _T("Contour group"), wxDefaultPosition, wxSize(270,45), 4 , lstOptContOperation,  4, wxRA_SPECIFY_COLS);
201         _radiolstboxContourGroup->SetSelection(1);
202         Connect( _radiolstboxContourGroup->GetId(), wxEVT_COMMAND_RADIOBOX_SELECTED , (wxObjectEventFunction) &interfInformationPanel::onContourGroup );
203         
204         
205         _XYZValues = new wxCheckBox(this, -1, _T("Save Contour Values") );
206         _XYZValues->SetValue(true);
207
208         _contourImage = new wxCheckBox(this, -1, _T("Extract Contours as Images") );
209         _contourImage->SetValue(true);  
210
211         _statistics = new wxCheckBox(this, -1, _T("Save Statistics") );
212         _statistics->SetValue(true);
213
214         wxButton *informationContourLabelsBtn                   = new wxButton(this,-1,_T("Contour labels"),wxDefaultPosition, wxSize(140,35) );
215         informationContourLabelsBtn->SetEventHandler( this );
216         Connect( informationContourLabelsBtn->GetId(),          wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfInformationPanel::onInformationContourLabels ); 
217
218         wxButton *statisticsContourBtn                                  = new wxButton(this,-1,_T("Contour statistics"),wxDefaultPosition, wxSize(140,35) );
219         statisticsContourBtn->SetEventHandler( this );
220         Connect( statisticsContourBtn->GetId(),         wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfInformationPanel::onExtractInformation ); 
221
222         wxButton *showResultImagesBtn                                           = new wxButton(this,-1,_T("Show result images"),wxDefaultPosition, wxSize(140,35) );
223         showResultImagesBtn->SetEventHandler( this );
224         Connect( showResultImagesBtn->GetId(),          wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfInformationPanel::onShowResultImages ); 
225         
226         
227         wxButton *saveResultsBtn                                                = new wxButton(this,-1,_T("Save Results"),wxDefaultPosition, wxSize(140,35) );
228         saveResultsBtn->SetEventHandler( this );
229         Connect( saveResultsBtn->GetId(),               wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfInformationPanel::onSaveResults ); 
230         
231         
232         int sizeZ = interfMainPanel::getInstance()->GetImageDataSizeZ();
233         //_theViewPanel->getSceneManager()->GetImageDataSizeZ();                        
234         _mbarrangeSliceInformation                                      =  new mBarRange(this,65,65);
235         _mbarrangeSliceInformation->SetMin(0);
236         _mbarrangeSliceInformation->SetStart(0);
237         _mbarrangeSliceInformation-> SetOrientation( true );
238         _mbarrangeSliceInformation-> setActiveStateTo(true);
239         _mbarrangeSliceInformation-> setVisibleLabels( true );
240         _mbarrangeSliceInformation-> setDeviceEndMargin(10);
241         _mbarrangeSliceInformation-> setRepresentedValues( 0 , sizeZ-1 );
242         _mbarrangeSliceInformation-> setDeviceBlitStart(10,10); 
243         _mbarrangeSliceInformation-> setIfWithActualDrawed( false );
244         _mbarrangeSliceInformation-> SetStart( 0 );
245         _mbarrangeSliceInformation-> SetEnd( sizeZ-1 );  
246
247         double range[2];
248         interfMainPanel::getInstance()->getImageRange(range);
249
250         int min = (int)floor (range[0]);
251         int max = (int)ceil (range[1]);
252
253         _mbarrangeRangeInformation      =  new mBarRange(this,65,65);
254         _mbarrangeRangeInformation->SetMin(0);
255         _mbarrangeRangeInformation->SetStart(0);
256         _mbarrangeRangeInformation-> SetOrientation( true );
257         _mbarrangeRangeInformation-> setActiveStateTo(true);
258         _mbarrangeRangeInformation-> setVisibleLabels( true );
259         _mbarrangeRangeInformation-> setDeviceEndMargin(10);
260         _mbarrangeRangeInformation-> setRepresentedValues( min , max );
261         _mbarrangeRangeInformation-> setDeviceBlitStart(10,10); 
262         _mbarrangeRangeInformation-> setIfWithActualDrawed( false );
263         _mbarrangeRangeInformation-> SetStart( min );
264         _mbarrangeRangeInformation-> SetEnd( max );  
265
266         _staticTextInformation  = new wxStaticText(this,-1,_T("    "));
267
268         _grid = new wxGrid( this,
269                 wxID_ANY,
270                 wxPoint( 0, 0 ),
271                 wxSize( 200, 500 ) );
272
273         int i,gridCol=10,gridRow=sizeZ+2;
274         _grid->CreateGrid( 0, 0 );
275         _grid->AppendRows(gridRow);
276         _grid->AppendCols(gridCol);
277
278         for (i=0;i<gridRow;i++)
279         {
280                 _grid->SetRowLabelValue(i, _T(" ") );
281         }
282 //                      _grid->SetColLabelSize(0);
283
284
285         FillGridWithContoursInformation();
286
287         wxFlexGridSizer * sizerSave             = new wxFlexGridSizer(2,2);
288         sizerSave -> Add( new wxStaticText(this,-1,_T("Save Options: "))  , 1, wxGROW );
289         sizerSave->Add( _XYZValues, 1, wxALL ,2 );
290         sizerSave->Add( _statistics, 1, wxALL ,2 );
291         sizerSave->Add( _contourImage, 1, wxALL ,2 );
292
293         wxFlexGridSizer * sizerA                = new wxFlexGridSizer(10);
294         sizerA->Add( _informationRadiobox                       , 1, wxALL ,2 );
295         sizerA->Add( _radiolstboxContourGroup           , 1, wxALL ,2 );
296         sizerA->Add( sizerSave          , 1, wxALL ,2 );
297
298
299         wxFlexGridSizer * sizerB                = new wxFlexGridSizer(10);
300         sizerB->Add( informationContourLabelsBtn, 1, wxALL ,2 );
301         sizerB->Add( statisticsContourBtn, 1, wxALL ,2 );
302         sizerB->Add( showResultImagesBtn, 1, wxALL ,2 );
303         sizerB->Add( saveResultsBtn, 1, wxALL ,2 );
304
305         wxFlexGridSizer * sizer         = new wxFlexGridSizer(1,8);
306         sizer->Add( sizerA                                              , 1, wxALL              , 0 );
307         sizer->Add( new wxStaticText(this               ,-1,_T("Slice Range"))  , 1, wxALL              , 0 );
308         sizer->Add( _mbarrangeSliceInformation  , 1, wxALL|wxGROW               , 2 );                  
309         sizer->Add( new wxStaticText(this               ,-1,_T("Gray Range"))   , 1, wxALL              , 0 );
310         sizer->Add( _mbarrangeRangeInformation  , 1, wxALL|wxGROW               , 2 );                  
311         sizer->Add( sizerB                                              , 1, wxEXPAND           , 0 );
312         sizer->Add( _staticTextInformation              , 1, wxEXPAND           , 0 );
313         sizer->Add( _grid                                               , 1, wxEXPAND   , 0 );
314
315         this->SetSizer( sizer );
316         this->SetSize( wxSize(1500,1500) );
317         //this->SetBackgroundColour( wxColour(100,100,100) );
318         this->SetAutoLayout( true );
319         this->Layout();
320         //return panel;
321 }
322 interfInformationPanel::~interfInformationPanel(){
323 }
324
325 void interfInformationPanel::onInformationContourLabels(wxCommandEvent& event){
326         wxBusyCursor wait;
327         FillGridWithContoursInformation();
328 }
329
330
331 void interfInformationPanel::onShowResultImages(wxCommandEvent& event)
332 {
333 //      onExtractInformation( event );
334         int selection           = _informationRadiobox->GetSelection();
335         int minZ                        = _mbarrangeSliceInformation->GetStart();
336         int maxZ                        = _mbarrangeSliceInformation->GetEnd();
337         int typeContourGroup = _radiolstboxContourGroup->GetSelection();
338         interfMainPanel::getInstance()->ShowResultImages( typeContourGroup , selection, minZ, maxZ);    
339 }
340
341
342 void interfInformationPanel::onExtractInformation(wxCommandEvent& event){
343         wxBusyCursor wait;
344         _grid->ClearGrid();
345
346         int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
347         int selection           = _informationRadiobox->GetSelection();
348         int minZ                        = _mbarrangeSliceInformation->GetStart();
349         int maxZ                        = _mbarrangeSliceInformation->GetEnd();
350         int     grayRangeMin    = _mbarrangeRangeInformation->GetStart();
351         int     grayRangeMax    = _mbarrangeRangeInformation->GetEnd();
352         
353         interfMainPanel::getInstance()->onInformationContourLabels(typeContourGroup, selection, minZ, maxZ,grayRangeMin,grayRangeMax);  
354 }
355
356 void interfInformationPanel::onSaveResults(wxCommandEvent& event)
357 {
358         wxFileDialog dialog(this, _T("Choose a filename"), _T(""), _T(""), wxFileSelectorDefaultWildcardStr, wxSAVE );
359         if (dialog.ShowModal() == wxID_OK)
360         {
361                 onExtractInformation( event );
362                 int selection           = _informationRadiobox->GetSelection();
363                 int minZ                        = _mbarrangeSliceInformation->GetStart();
364                 int maxZ                        = _mbarrangeSliceInformation->GetEnd();
365                 std::string directory=(const char *)(dialog.GetDirectory().mb_str());
366                 std::string namefile=(const char *)(dialog.GetFilename().mb_str());
367                 std::string filename = (const char *)(dialog.GetPath().mb_str() );
368                 int typeContourGroup = _radiolstboxContourGroup->GetSelection();
369                 interfMainPanel::getInstance()->onSaveResults(directory, namefile, filename, 
370                         typeContourGroup,
371                         selection,minZ,maxZ,
372                         _XYZValues->GetValue(), _contourImage->GetValue(), _statistics->GetValue());
373         }
374 }
375
376 void interfInformationPanel::FillGridWithContoursInformation(){
377
378         wxString tempString;
379         _grid->ClearGrid();
380         _grid->SetColLabelValue(0, _T("A") );
381         _grid->SetColLabelValue(1, _T("B") );
382         _grid->SetColLabelValue(2, _T("C") );
383         _grid->SetColLabelValue(3, _T("D") );
384         _grid->SetColLabelValue(4, _T("E") );
385         _grid->SetColLabelValue(5, _T("F") );
386         //_instantPanel->getInstant( tempVector );
387
388         int z,sizeZ = interfMainPanel::getInstance()->GetImageDataSizeZ();//->getSceneManager()->GetImageDataSizeZ();
389         int ii,sizeLstContourThings;
390         for ( z=0 ; z<sizeZ ; z++)
391         {               
392                 
393                 std::vector<std::string> lstContourThings = interfMainPanel::getInstance()->getOutlinesName(z);
394                         
395                         //this->_modelManager->getOutlinesAtInstant( &instant );
396
397                 sizeLstContourThings = lstContourThings.size();
398                 tempString.Printf(_T("%d - %d"),z, sizeLstContourThings);
399                 _grid->SetRowLabelValue(z, tempString );
400
401                 for (ii=0 ; ii<sizeLstContourThings ; ii++)
402                 {
403                         //ContourThing **contourthing = lstContourThings[ii];
404                         //tempString = wxString((*contourthing)->getName().c_str(),wxConvUTF8) ;
405                         tempString = wxString(lstContourThings[ii].c_str(),wxConvUTF8) ;
406                         _grid->SetCellValue( z, ii, tempString );
407                 } // for ii
408         }// for z
409         
410         // Last line
411         _grid->SetRowLabelValue(sizeZ, _T(" ") );
412         for (ii=0 ; ii<sizeLstContourThings ; ii++)
413         {
414                 _grid->SetCellValue( sizeZ, ii, _T(" ") );
415         } // for ii
416         
417 }
418
419 void interfInformationPanel::setStringInfoPanel(wxString tmpString){
420         _staticTextInformation->SetLabel(tmpString);
421 }
422
423 void interfInformationPanel::setRowLabelInfoPanel(int z,wxString tempString){
424         _grid->SetRowLabelValue(z, tempString );
425 }
426
427 int interfInformationPanel::getNumberCols(){
428         return _grid->GetNumberCols();
429 }
430
431 void interfInformationPanel::appendCols(int numcols){
432     _grid->AppendCols(numcols);
433 }
434
435 void interfInformationPanel::setCellValue(int z,int tmpIntA,wxString tempString){
436         _grid->SetCellValue( z, tmpIntA , tempString );
437 }
438
439 void interfInformationPanel::setColLabel(int tmpIntB,wxString tmpTitleString){
440         _grid->SetColLabelValue(tmpIntB, tmpTitleString);
441 }
442
443 wxString interfInformationPanel::getCellValue(int j,int i){
444         return _grid->GetCellValue( j , i );
445 }
446
447 void interfInformationPanel::onContourGroup(wxCommandEvent& event)
448 {
449         printf("EED interfInformationPanel::onContourGroup \n");
450         int contourGroup=_radiolstboxContourGroup->GetSelection();
451         if (contourGroup==3)
452         {
453                 contourGroup=0;
454         }
455         interfMainPanel::getInstance()->SetContourGroup( _radiolstboxContourGroup->GetSelection() );    
456 }
457
458 //CMRU 29-08-09-----------------------------------------------------------------------------------------------
459 interfCalibrationPanel:: interfCalibrationPanel(wxWindow * parent)
460 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
461 {
462         double range[2];
463         interfMainPanel::getInstance()->getImageRange(range);
464
465         //Radio buttons
466         wxString options[3];
467         options[0]=_T("mm");
468         options[1]=_T("cm");
469         options[2]=_T("inch");
470
471         _unitsRadiobox = new wxRadioBox(this, -1, _T("Unit of measurement"), wxPoint(2, 25), wxSize(145,45), 3 , options,  3, wxRA_SPECIFY_COLS);
472         _unitsRadiobox->SetSelection(0);
473         
474         //The label
475         new wxStaticText(this, wxID_ANY, wxT("Real Size: "),   wxPoint(2, 5));
476         
477         //Text Control
478         _size = new wxTextCtrl(this, wxID_ANY, wxT(""),  wxPoint(78,3),   wxSize(70, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);
479         
480         //The button
481         new wxButton(this, 1, wxT("Calibrate"), wxPoint(78, 70), wxSize(70, 25), 0, wxDefaultValidator, wxT("button"));
482
483         //Conexion del boton con su respectivo manejador
484         Connect(1, wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction) &interfCalibrationPanel::onCalibrate);
485         
486 }
487
488 interfCalibrationPanel:: ~interfCalibrationPanel()
489 {
490 }
491
492 void interfCalibrationPanel::onCalibrate(wxCommandEvent& event)
493 {
494         wxString size =_size->GetValue();
495         int unit = _unitsRadiobox->GetSelection();
496         interfMainPanel::getInstance()->onCalibration(size, unit);
497 }
498 //------------------------------------------------------------------------------------------------------------