1 #include "interfSegmentationMenu.h"
2 #include "interfMainPanel.h"
4 interfSegmentationMenu::interfSegmentationMenu(wxWindow * parent, int sizex, int sizey,wxEvtHandler* evtHandler, std::string datdir)
5 : interfMenuBar(parent, sizex, sizey)
7 this->datadir = datdir;
8 contourevent = (wxContourEventHandler*)evtHandler;
13 segmentPanelITK = NULL;
15 eventHandler = evtHandler;
20 void interfSegmentationMenu::initButtons(wxEvtHandler* evtHandler) {
22 std::vector<std::string> path, nom;
23 std::vector<wxObjectEventFunction> funct;
25 path.push_back(datadir + "/Segmentation.png");
26 nom.push_back("Find shapes by automatic segmentation");
27 funct.push_back((wxObjectEventFunction) &interfSegmentationMenu:: onSegmentationPressed);
29 path.push_back(datadir + "/ITK.png");
30 nom.push_back("Find shapes by automatic segmentation with ITK");
31 funct.push_back((wxObjectEventFunction) &interfSegmentationMenu:: onSegmentationPressedITK);
33 path.push_back(datadir + "/snake.png");
34 nom.push_back("Find shapes using border snake interaction");
35 funct.push_back((wxObjectEventFunction) &interfSegmentationMenu:: onSnakePressed);
37 this->addButtons(path, nom);
38 this->setVectorFunction(funct);
40 this->connectEvents(evtHandler);
45 interfSegmentationMenu::~interfSegmentationMenu()
50 ** Responds to the events of the buttons, when the same panel is responsible for it. It gets the name
51 ** of the button corresponding to the method that has to be executed,
52 ** it uses attribute eventHandler to call the methods define by the application.
53 ** see setEventHandler(wxEventHandler*)
57 void interfSegmentationMenu::onSegmentationPressed(wxCommandEvent& event){
58 if(segmentPanel == NULL){
59 segmentPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(""));
62 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);
63 segmentPanel->SetSizer(flexsizer, true);
64 segmentPanel->SetAutoLayout( true );
65 segmentPanel->SetEventHandler(this->contourevent);
67 wxPanel* panel = contourevent->getSegmentationPanel(segmentPanel);
70 wxStaticText* stattext = new wxStaticText(segmentPanel, -1, wxString(" Automatic Segmentation "), wxDefaultPosition,
71 wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(""));
73 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
74 flexsizer->Add(panel, wxEXPAND);
75 segmentPanel->Layout();
77 interfMainPanel::getInstance()->showPanel(segmentPanel);
78 contourevent->showAxis(true);
83 void interfSegmentationMenu::hideAxis(){
86 contourevent->showAxis(axisshown);
90 void interfSegmentationMenu::onSegmentationPressedITK(wxCommandEvent& event){
91 if(segmentPanelITK == NULL){
92 segmentPanelITK = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(""));
95 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1);
96 segmentPanelITK->SetSizer(flexsizer, true);
97 segmentPanelITK->SetAutoLayout( true );
98 segmentPanelITK->SetEventHandler(this->contourevent);
100 wxPanel* panel = contourevent->getSegmentationPanelITK(segmentPanelITK);
103 wxStaticText* stattext = new wxStaticText(segmentPanelITK, -1, wxString(" Automatic ITK Segmentation "), wxDefaultPosition,
104 wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(""));
106 flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE);
107 flexsizer->Add(panel, wxEXPAND);
108 segmentPanelITK->Layout();
110 interfMainPanel::getInstance()->showPanel(segmentPanelITK);
111 //contourevent->showAxis(true);
115 void interfSegmentationMenu::onSnakePressed(wxCommandEvent& event){
117 contourevent->onSnakePressed(this);