interfSegmentationPanels.cxx

Go to the documentation of this file.
00001 #include "interfSegmentationPanels.h"
00002 #include "interfMainPanel.h"
00003 
00004 interfSegmentationPanelVTK::interfSegmentationPanelVTK(wxWindow * parent)
00005 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
00006 {
00007         int sizeZ = interfMainPanel::getInstance()->GetImageDataSizeZ();
00008 
00009         double range[2];
00010         interfMainPanel::getInstance()->getImageRange(range);
00011 
00012         int min = (int)floor (range[0]);
00013         int max = (int)ceil (range[1]);
00014 
00015         wxButton *segmentationOneSliceBtn   = new wxButton(this,-1,_T("Current slice"), wxDefaultPosition, wxSize(200,35) );
00016         wxButton *segmentationAllSliceBtn   = new wxButton(this,-1,_T("All slices") ,wxDefaultPosition, wxSize(200,35) );
00017         _isovalue                           = new wxSlider(this, -1, 40 , min, max, wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
00018         _sampling                           = new wxSlider(this, -1, 20 , 4, 50, wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
00019         wxString lstOptions[3];
00020         lstOptions[0]=_T("A");
00021         lstOptions[1]=_T("B");
00022         lstOptions[2]=_T("C");
00023         methodRadiobox                      = new wxRadioBox(this, -1, _T("Method (find ctrl. Points)"), wxDefaultPosition, wxSize(200,45), 3 , lstOptions,  3, wxRA_SPECIFY_COLS);
00024         methodRadiobox->SetSelection(2);
00025         _staticTextSegmentation             = new wxStaticText(this,-1,_T("    "));
00026 
00027         _mbarrange                          = new mBarRange(this,70, 65);
00028         _mbarrange->SetMin(0);
00029         _mbarrange->SetStart(0);
00030 
00031         _mbarrange->SetOrientation( true );
00032         _mbarrange->setActiveStateTo(true);
00033         _mbarrange->setVisibleLabels( true );
00034         _mbarrange->setDeviceEndMargin(10);
00035         _mbarrange->setRepresentedValues( 0 , sizeZ );
00036         _mbarrange->setDeviceBlitStart(10,10); 
00037         _mbarrange->setIfWithActualDrawed( false );
00038         _mbarrange->SetStart( 0 );
00039         _mbarrange->SetEnd( sizeZ );  
00040 
00041         wxFlexGridSizer * sizer             = new wxFlexGridSizer(1);
00042         sizer->Add( new wxStaticText(this, -1, _T("Isovalue (Gray level)")), 1, wxGROW );
00043         sizer->Add( _isovalue, 1, wxGROW );
00044         sizer->Add( methodRadiobox , 1, wxGROW );
00045         sizer->Add( new wxStaticText(this, -1 ,_T("Sampling (%)")), 1, wxGROW );
00046         sizer->Add( _sampling, 1, wxGROW );
00047         sizer->Add( segmentationOneSliceBtn, 1, wxGROW );
00048         sizer->Add( new wxStaticText(this, -1, _T(" ")), 1, wxGROW );
00049         sizer->Add( _staticTextSegmentation, 1, wxGROW );
00050         sizer->Add( segmentationAllSliceBtn, 1, wxGROW );
00051         sizer->Add( _mbarrange, 1, wxGROW );
00052 
00053         this->SetSizer( sizer );
00054 //              panel->SetSize( sizePanel );
00055         this->SetSize( wxDefaultSize );
00056         this->SetAutoLayout( true );
00057         this->Layout();
00058         
00059 //_segmentationFrame->SetEventHandler( this );
00060         //segmentationOneSliceBtn->SetEventHandler( this );
00061         //segmentationAllSliceBtn->SetEventHandler( this );
00062         //panel->SetEventHandler(this);
00063         Connect( segmentationOneSliceBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) &interfSegmentationPanelVTK::onSegmentationOneSlice); 
00064         Connect( segmentationAllSliceBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) &interfSegmentationPanelVTK::onSegmentationAllSlice); 
00065 }
00066 
00067 
00068 interfSegmentationPanelVTK::~interfSegmentationPanelVTK()
00069 {
00070 }
00071 
00079 void  interfSegmentationPanelVTK::onSegmentationPressedITK(wxCommandEvent& event){
00080    if(segmentPanelITK == NULL) {
00081                 segmentPanelITK = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T("")));                 
00082 
00083                 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);    
00084                 segmentPanelITK->SetSizer(flexsizer, true);
00085                 segmentPanelITK->SetAutoLayout( true ); 
00086                                 
00087                 wxPanel* panel = new wxPanel(this, -1);//contourevent->getSegmentationPanelITK(segmentPanelITK);
00088         
00089                 wxStaticText* stattext = new wxStaticText(segmentPanelITK, -1, wxString(_T("   Automatic ITK Segmentation   ")), wxDefaultPosition,
00090                         wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T("")));
00091 
00092                 flexsizer->Add(stattext, wxALIGN_CENTER | wxALIGN_CENTRE);
00093                 flexsizer->Add(panel, wxEXPAND);
00094                 segmentPanelITK->Layout();
00095    }
00096         interfMainPanel::getInstance()->showPanel(segmentPanelITK);
00097         //contourevent->showAxis(true);
00098         //axisshown = true;
00099 }
00100 
00101 void interfSegmentationPanelVTK::onSegmentationOneSlice( wxCommandEvent& event )
00102 {
00103         int isovalue = _isovalue->GetValue();
00104         int sampling = _sampling->GetValue();
00105         int method = methodRadiobox->GetSelection();
00106         interfMainPanel::getInstance()->onSegmentationOneSlice(isovalue, sampling, method);
00107         
00108 }
00109 void interfSegmentationPanelVTK::onSegmentationAllSlice( wxCommandEvent& event )
00110 {
00111         int minZ=_mbarrange->GetStart();
00112         int maxZ=_mbarrange->GetEnd();
00113 
00114         int isovalue = _isovalue->GetValue();
00115         int sampling = _sampling->GetValue();
00116         int method   = methodRadiobox->GetSelection();
00117 
00118         interfMainPanel::getInstance()->onSegmentationAllSlice(minZ, maxZ, isovalue, sampling, method); 
00119 }
00120 
00121 void interfSegmentationPanelVTK::setLabel(wxString tmpString){
00122         _staticTextSegmentation->SetLabel(tmpString);
00123 }
00128 interfSegmentationPanelITK::interfSegmentationPanelITK(wxWindow * parent)
00129 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
00130 {
00131         double range[2];
00132         interfMainPanel::getInstance()->getImageRange(range);
00133 
00134 //      int min = (int)floor (range[0]);
00135 //      int max = (int)ceil (range[1]);
00136         
00137         //The labels
00138         //wxStaticText * distance =    
00139         new wxStaticText(this, wxID_ANY, wxT("Initial Distance"),   wxPoint(5, 5));
00140         //wxStaticText * sigma =       
00141         new wxStaticText(this, wxID_ANY, wxT("Sigma"),              wxPoint(5, 30));
00142         //wxStaticText * alfa =        
00143         new wxStaticText(this, wxID_ANY, wxT("Sigmoid Alfa"),       wxPoint(5, 55));
00144         //wxStaticText * beta =        
00145         new wxStaticText(this, wxID_ANY, wxT("Sigmoid Beta"),       wxPoint(5, 80));
00146         //wxStaticText * propagation = 
00147         new wxStaticText(this, wxID_ANY, wxT("Propagation Scaling"),wxPoint(5, 105));
00148         //wxStaticText * iterations =  
00149         new wxStaticText(this, wxID_ANY, wxT("Iterations"),         wxPoint(5, 130));
00150         //wxStaticText * infStrength = 
00151         new wxStaticText(this, wxID_ANY, wxT("Inflation Strength"), wxPoint(5, 155));
00152 
00153         //Text Controls
00154 
00155         _distance =      new wxTextCtrl(this, wxID_ANY, wxT("5.0"),  wxPoint(98,5),   wxSize(80, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);
00156         _sigma =         new wxTextCtrl(this, wxID_ANY, wxT("1.2"),  wxPoint(98,30),  wxSize(80, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);
00157         _alfa =          new wxTextCtrl(this, wxID_ANY, wxT("-1.0"), wxPoint(98,55),  wxSize(80, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);        
00158         _beta =          new wxTextCtrl(this, wxID_ANY, wxT("5.0"),  wxPoint(98,80),  wxSize(80, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);        
00159         _propagation =   new wxTextCtrl(this, wxID_ANY, wxT("6.0"),  wxPoint(98,105), wxSize(80, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);        
00160         _iterations =    new wxTextCtrl(this, wxID_ANY, wxT("800"),  wxPoint(98,130), wxSize(80, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);        
00161         _infStrength =   new wxTextCtrl(this, wxID_ANY, wxT("3.0"),  wxPoint(98,155), wxSize(80, 20), 0, wxDefaultValidator, wxTextCtrlNameStr);
00162         
00163         //El boton
00164         //wxButton * bot = 
00165         new wxButton(this, 6, wxT("One Slice"), wxPoint(98, 180), wxSize(70, 25), 0, wxDefaultValidator, wxT("button"));
00166 
00167         //Conexion del boton con su respectivo manejador
00168         Connect(6, wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction) &interfSegmentationPanelITK::onSegmentationOneSlice);
00169         
00170         
00171 }
00172 interfSegmentationPanelITK::~interfSegmentationPanelITK(){
00173 
00174 }
00175 
00176 void interfSegmentationPanelITK::onSegmentationOneSlice( wxCommandEvent& event )
00177 {
00178         wxString distanc=_distance->GetValue();
00179         wxString sigm=_sigma->GetValue();
00180         wxString alf=_alfa->GetValue();
00181         wxString bet=_beta->GetValue();
00182         wxString prop=_propagation->GetValue();
00183         wxString iter=_iterations->GetValue();
00184         wxString infS=_infStrength->GetValue();
00185         
00186         interfMainPanel::getInstance()->onSegmentationOneSliceITK(distanc, sigm, alf, bet, prop, iter, infS);
00187         
00188 }
00189 void interfSegmentationPanelITK::onSegmentationAllSlice( wxCommandEvent& event )
00190 {
00191 
00192         /*int minZ=_mbarrange->GetStart();
00193         int maxZ=_mbarrange->GetEnd();
00194 
00195         int                             isovalue        = _isovalue->GetValue();
00196         int                             sampling        = _sampling->GetValue();
00197         int method = methodRadiobox->GetSelection();
00198 
00199 
00200         interfMainPanel::getInstance()->onSegmentationAllSlice(minZ, maxZ, isovalue, sampling, method);*/
00201         
00202 }
00203 
00204 //------------------------------------------------------------------------------------------------------------
00205 
00206 
00211 interfMirrorPanel::interfMirrorPanel(wxWindow* parent)
00212 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
00213 {
00214         _axisStatus = true;
00215 
00216         wxButton *axisShowBtn = new wxButton(this,wxID_ANY,_T("Show/Hide Axis"), wxDefaultPosition, wxSize(200,35) );
00217         wxButton *mirrorGoBtn = new wxButton(this,wxID_ANY,_T("Mirror Contour"), wxDefaultPosition, wxSize(200,35) );
00218         _thickness = new wxSlider(this, -1, 4, 1, 10, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator);
00219         
00220         Connect( axisShowBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfMirrorPanel::onAxisShow );
00221         Connect( mirrorGoBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfMirrorPanel::onMirrorGo ); 
00222 
00223         wxFlexGridSizer * sizer         = new wxFlexGridSizer(1);
00224         sizer -> Add( axisShowBtn, 1, wxGROW );
00225         sizer -> Add( new wxStaticText(this,-1,_T(" "))  , 1, wxGROW );
00226         sizer -> Add( new wxStaticText(this,-1,_T("Thickness"))  , 1, wxGROW );
00227         sizer -> Add( _thickness, 1, wxGROW );
00228         sizer -> Add( mirrorGoBtn, 1, wxGROW );
00229 
00230         this->SetSizer( sizer );
00231         this->SetAutoLayout( true );
00232         this->Layout();
00233 }
00234 
00235 interfMirrorPanel::~interfMirrorPanel(){
00236 }
00237 
00238 void interfMirrorPanel::onAxisShow(wxCommandEvent& event)
00239 {
00240         
00241         if (!_axisStatus)
00242         {
00243                 interfMainPanel::getInstance()->onMirrorAxisShow();
00244                 _axisStatus=true;
00245         }
00246         else
00247         {       
00248                 interfMainPanel::getInstance()->onMirrorAxisHide();
00249                 _axisStatus=false;              
00250         }
00251 }
00252 
00253 void interfMirrorPanel::onMirrorGo(wxCommandEvent& event)
00254 {
00255         if (_axisStatus)
00256         {
00257                 interfMainPanel::getInstance()->onMirror();
00258         }
00259 }
00260 
00261 void interfMirrorPanel::onChangeWidth(wxScrollEvent& event)
00262 {
00263         int width = _thickness->GetValue();
00264         interfMainPanel::getInstance()->onMirrorChangeWidth(width);
00265 }
00266 
00267 
00268 
00269 
00270 
00271 
00272 
00273 BEGIN_EVENT_TABLE(interfMirrorPanel, wxPanel)
00274 EVT_SCROLL(interfMirrorPanel :: onChangeWidth)
00275 END_EVENT_TABLE()
00276 
00278 
00279 interfTestPanel::interfTestPanel(wxWindow* parent)
00280 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN)
00281 {
00282         wxButton *button1 = new wxButton(this,wxID_ANY,_T("Button 1"), wxDefaultPosition, wxSize(200,35) );
00283         wxButton *button2 = new wxButton(this,wxID_ANY,_T("Button 2"), wxDefaultPosition, wxSize(200,35) );
00284         
00285         Connect( button1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfTestPanel::onButton1Pressed );
00286         Connect( button2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfTestPanel::onButton2Pressed ); 
00287         
00288         wxFlexGridSizer * sizer         = new wxFlexGridSizer(1);
00289         sizer -> Add( button1, 1, wxGROW );
00290         sizer -> Add( button2, 1, wxGROW );
00291 
00292         this->SetSizer( sizer );
00293         this->SetAutoLayout( true );
00294         this->Layout();
00295 }
00296 
00297 interfTestPanel::~interfTestPanel(){
00298 }
00299 
00300 void interfTestPanel::onButton1Pressed(wxCommandEvent& event)
00301 {
00302         std::cout << "Button 1 has been pressed" << std::endl;
00303 }
00304 
00305 void interfTestPanel::onButton2Pressed(wxCommandEvent& event)
00306 {
00307         std::cout << "Button 2 has been pressed" << std::endl;
00308 }

Generated on Wed Jun 27 23:28:32 2012 for creaContours_lib by  doxygen 1.5.7.1