#include "interfSegmentationPanels.h" #include "interfMainPanel.h" interfSegmentationPanelVTK::interfSegmentationPanelVTK(wxWindow * parent) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN) { int sizeZ = interfMainPanel::getInstance()->GetImageDataSizeZ(); //int sizeZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ(); double range[2]; //_theViewPanel->getSceneManager()->GetImageDataRange(range); interfMainPanel::getInstance()->GetImageDataRange(range); wxButton *segmentationOneSliceBtn = new wxButton(this,-1,_T("Current slice"), wxDefaultPosition, wxSize(200,35) ); wxButton *segmentationAllSliceBtn = new wxButton(this,-1,_T("All slices") ,wxDefaultPosition, wxSize(200,35) ); _isovalue = new wxSlider(this, -1, 40 , (int)(range[0]), (int)(range[1]), wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator); _sampling = new wxSlider(this, -1, 20 , 4, 50, wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator); wxString lstOptions[3]; lstOptions[0]=_T("A"); lstOptions[1]=_T("B"); lstOptions[2]=_T("C"); methodRadiobox = new wxRadioBox(this, -1, _T("Method (find ctrl. Points)"), wxDefaultPosition, wxSize(200,45), 3 , lstOptions, 3, wxRA_SPECIFY_COLS); methodRadiobox->SetSelection(2); _staticTextSegmentation = new wxStaticText(this,-1,_T(" ")); _mbarrange = new mBarRange(this,70, 65); _mbarrange->SetMin(0); _mbarrange->SetStart(0); _mbarrange-> SetOrientation( true ); _mbarrange-> setActiveStateTo(true); _mbarrange-> setVisibleLabels( true ); _mbarrange-> setDeviceEndMargin(10); _mbarrange-> setRepresentedValues( 0 , sizeZ ); _mbarrange-> setDeviceBlitStart(10,10); _mbarrange-> setIfWithActualDrawed( false ); _mbarrange-> SetStart( 0 ); _mbarrange-> SetEnd( sizeZ ); wxFlexGridSizer * sizer = new wxFlexGridSizer(1); sizer -> Add( new wxStaticText(this,-1,_T("Isovalue (Gray level)")) , 1, wxGROW ); sizer -> Add( _isovalue , 1, wxGROW ); sizer -> Add( methodRadiobox , 1, wxGROW ); sizer -> Add( new wxStaticText(this,-1,_T("Sampling (%)")) , 1, wxGROW ); sizer -> Add( _sampling , 1, wxGROW ); sizer -> Add( segmentationOneSliceBtn , 1, wxGROW ); sizer -> Add( new wxStaticText(this,-1,_T(" ")) , 1, wxGROW ); sizer -> Add( _staticTextSegmentation , 1, wxGROW ); sizer -> Add( segmentationAllSliceBtn , 1, wxGROW ); sizer -> Add( _mbarrange , 1, wxGROW ); this->SetSizer( sizer ); // panel->SetSize( sizePanel ); this->SetSize( wxDefaultSize ); this->SetAutoLayout( true ); this->Layout(); //_segmentationFrame->SetEventHandler( this ); //segmentationOneSliceBtn->SetEventHandler( this ); //segmentationAllSliceBtn->SetEventHandler( this ); //panel->SetEventHandler(this); Connect( segmentationOneSliceBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelVTK::onSegmentationOneSlice); Connect( segmentationAllSliceBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelVTK::onSegmentationAllSlice); } interfSegmentationPanelVTK::~interfSegmentationPanelVTK() { } /** ** Responds to the events of the buttons, when the same panel is responsible for it. It gets the name ** of the button corresponding to the method that has to be executed, ** it uses attribute eventHandler to call the methods define by the application. ** see setEventHandler(wxEventHandler*) **/ void interfSegmentationPanelVTK::onSegmentationPressedITK(wxCommandEvent& event){ if(segmentPanelITK == NULL){ segmentPanelITK = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T(""))); wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1); segmentPanelITK->SetSizer(flexsizer, true); segmentPanelITK->SetAutoLayout( true ); wxPanel* panel = new wxPanel(this, -1);//contourevent->getSegmentationPanelITK(segmentPanelITK); wxStaticText* stattext = new wxStaticText(segmentPanelITK, -1, wxString(_T(" Automatic ITK Segmentation ")), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T(""))); flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE); flexsizer->Add(panel, wxEXPAND); segmentPanelITK->Layout(); } interfMainPanel::getInstance()->showPanel(segmentPanelITK); //contourevent->showAxis(true); //axisshown = true; } void interfSegmentationPanelVTK::onSegmentationOneSlice( wxCommandEvent& event ) { int isovalue = _isovalue->GetValue(); int sampling = _sampling->GetValue(); int method = methodRadiobox->GetSelection(); interfMainPanel::getInstance()->onSegmentationOneSlice(isovalue, sampling, method); } void interfSegmentationPanelVTK::onSegmentationAllSlice( wxCommandEvent& event ) { int minZ=_mbarrange->GetStart(); int maxZ=_mbarrange->GetEnd(); int isovalue = _isovalue->GetValue(); int sampling = _sampling->GetValue(); int method = methodRadiobox->GetSelection(); interfMainPanel::getInstance()->onSegmentationAllSlice(minZ, maxZ, isovalue, sampling, method); } void interfSegmentationPanelVTK::setLabel(wxString tmpString){ _staticTextSegmentation->SetLabel(tmpString); } /** ** start of new implementation ** interfSegmentationPanelITK **/ interfSegmentationPanelITK::interfSegmentationPanelITK(wxWindow * parent) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN) { int sizeZ = interfMainPanel::getInstance()->GetImageDataSizeZ(); //int sizeZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ(); double range[2]; //_theViewPanel->getSceneManager()->GetImageDataRange(range); interfMainPanel::getInstance()->GetImageDataRange(range); wxButton *segmentationOneSliceBtn = new wxButton(this,-1,_T("Current slice"), wxDefaultPosition, wxSize(200,35) ); wxButton *segmentationAllSliceBtn = new wxButton(this,-1,_T("All slices") ,wxDefaultPosition, wxSize(200,35) ); Connect( segmentationOneSliceBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelITK::onSegmentationOneSlice); Connect( segmentationAllSliceBtn->GetId(), wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &interfSegmentationPanelITK::onSegmentationAllSlice); _isovalue = new wxSlider(this, -1, 40 , (int)(range[0]), (int)(range[1]), wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator); _sampling = new wxSlider(this, -1, 20 , 4, 50, wxDefaultPosition, wxSize(200,35), wxSL_HORIZONTAL|wxSL_LABELS, wxDefaultValidator); wxString lstOptions[3]; lstOptions[0]=_T("A"); lstOptions[1]=_T("B"); lstOptions[2]=_T("C"); methodRadiobox = new wxRadioBox(this, -1, _T("Method (find ctrl. Points)"), wxDefaultPosition, wxSize(200,45), 3 , lstOptions, 3, wxRA_SPECIFY_COLS); methodRadiobox->SetSelection(2); _staticTextSegmentation = new wxStaticText(this,-1,_T(" ")); _mbarrange = new mBarRange(this,70, 65); _mbarrange->SetMin(0); _mbarrange->SetStart(0); _mbarrange-> SetOrientation( true ); _mbarrange-> setActiveStateTo(true); _mbarrange-> setVisibleLabels( true ); _mbarrange-> setDeviceEndMargin(10); _mbarrange-> setRepresentedValues( 0 , sizeZ ); _mbarrange-> setDeviceBlitStart(10,10); _mbarrange-> setIfWithActualDrawed( false ); _mbarrange-> SetStart( 0 ); _mbarrange-> SetEnd( sizeZ ); wxFlexGridSizer * sizer = new wxFlexGridSizer(1); sizer -> Add( new wxStaticText(this,-1,_T("Isovalue (Gray level)")) , 1, wxGROW ); sizer -> Add( _isovalue , 1, wxGROW ); sizer -> Add( methodRadiobox , 1, wxGROW ); sizer -> Add( new wxStaticText(this,-1,_T("Sampling (%)")) , 1, wxGROW ); sizer -> Add( _sampling , 1, wxGROW ); sizer -> Add( segmentationOneSliceBtn , 1, wxGROW ); sizer -> Add( new wxStaticText(this,-1,_T(" ")) , 1, wxGROW ); sizer -> Add( _staticTextSegmentation , 1, wxGROW ); sizer -> Add( segmentationAllSliceBtn , 1, wxGROW ); sizer -> Add( _mbarrange , 1, wxGROW ); this->SetSizer( sizer ); // panel->SetSize( sizePanel ); this->SetSize( wxDefaultSize ); this->SetAutoLayout( true ); this->Layout(); } interfSegmentationPanelITK::~interfSegmentationPanelITK(){ } void interfSegmentationPanelITK::onSegmentationOneSlice( wxCommandEvent& event ) { /*int isovalue = _isovalue->GetValue(); int sampling = _sampling->GetValue(); int method = methodRadiobox->GetSelection(); interfMainPanel::getInstance()->onSegmentationOneSlice(isovalue, sampling, method);*/ } void interfSegmentationPanelITK::onSegmentationAllSlice( wxCommandEvent& event ) { /*int minZ=_mbarrange->GetStart(); int maxZ=_mbarrange->GetEnd(); int isovalue = _isovalue->GetValue(); int sampling = _sampling->GetValue(); int method = methodRadiobox->GetSelection(); interfMainPanel::getInstance()->onSegmentationAllSlice(minZ, maxZ, isovalue, sampling, method);*/ } //------------------------------------------------------------------------------------------------------------