1 #include "interfMainPanel.h"
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"
14 interfMainPanel* interfMainPanel::interfmainpanel=NULL;
16 interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtHandler * evtHandler, std::string datadir)
17 : wxPanel(parent, -1, wxDefaultPosition, wxSize(sizex, sizey), wxBORDER_SUNKEN)
20 PANEL = "New Contour";
25 PANEL5 = "Segmentation";
27 splitterwindow = new wxSplitterWindow(this,-1, wxDefaultPosition, wxSize(sizex, sizey), wxSP_3DSASH, wxString(""));
32 wxPanel* toolpanel = new wxPanel(splitterwindow, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
34 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(6,2,1,1);
35 toolpanel->SetSizer(flexsizer, true);
36 toolpanel->SetAutoLayout( true );
38 wxButton* b = getButton(toolpanel);
39 b->SetClientData(&PANEL);
40 wxButton* b1 = getButton(toolpanel);
41 b1->SetClientData(&PANEL1);
42 wxButton* b2 = getButton(toolpanel);
43 b2->SetClientData(&PANEL2);
44 wxButton* b3 = getButton(toolpanel);
45 b3->SetClientData(&PANEL3);
46 wxButton* b4 = getButton(toolpanel);
47 b4->SetClientData(&PANEL4);
48 wxButton* b5 = getButton(toolpanel);
49 b5->SetClientData(&PANEL5);
51 wxPanel* mentex = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
52 wxPanel* mentex1 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
53 wxPanel* mentex2 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
54 wxPanel* mentex3 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
55 wxPanel* mentex4 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
56 wxPanel* mentex5 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
58 menubar = new interfNewContourMenu(mentex, sizex, sizey, evtHandler, datadir);
59 menubar1 = new interfIOMenu(mentex1, sizex, sizey, evtHandler, datadir);
60 menubar2 = new interfEditMenu(mentex2, sizex, sizey, evtHandler, datadir);
61 menubar3 = new interfDeleteMenu(mentex3, sizex, sizey, evtHandler, datadir);
62 menubar4 = new interfToolsMenu(mentex4, sizex,sizey, evtHandler, datadir);
63 menubar5 = new interfSegmentationMenu(mentex5, sizex,sizey, evtHandler, datadir);
65 statictext = getText(mentex, PANEL);
66 statictext1 = getText(mentex1, PANEL1);
67 statictext2 = getText(mentex2, PANEL2);
68 statictext3 = getText(mentex3, PANEL3);
69 statictext4 = getText(mentex4, PANEL4);
70 statictext5 = getText(mentex5, PANEL5);
72 flexsizer->Add(b, wxFIXED_MINSIZE);
73 flexsizer->Add(setMenuTextSizer(mentex, menubar,statictext), wxFIXED_MINSIZE);
75 flexsizer->Add(b1, wxFIXED_MINSIZE);
76 flexsizer->Add(setMenuTextSizer(mentex1, menubar1,statictext1), wxFIXED_MINSIZE);
78 flexsizer->Add(b2, wxFIXED_MINSIZE);
79 flexsizer->Add(setMenuTextSizer(mentex2, menubar2,statictext2), wxFIXED_MINSIZE);
81 flexsizer->Add(b3, wxFIXED_MINSIZE);
82 flexsizer->Add(setMenuTextSizer(mentex3, menubar3,statictext3), wxFIXED_MINSIZE);
84 flexsizer->Add(b4, wxFIXED_MINSIZE);
85 flexsizer->Add(setMenuTextSizer(mentex4, menubar4,statictext4), wxFIXED_MINSIZE);
87 flexsizer->Add(b5, wxFIXED_MINSIZE);
88 flexsizer->Add(setMenuTextSizer(mentex5, menubar5,statictext5), wxFIXED_MINSIZE);
93 infoPanel = new wxPanel(splitterwindow, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString(""));
94 wxFlexGridSizer* infosizer = new wxFlexGridSizer(1,1,2,2);
95 infoPanel->SetSizer(infosizer, true);
96 infoPanel->SetAutoLayout( true );
98 splitterwindow->Initialize(toolpanel);
99 splitterwindow->SplitHorizontally(toolpanel, infoPanel);
101 Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
102 Connect(b1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
103 Connect(b2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
104 Connect(b3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
105 Connect(b4->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
106 Connect(b5->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
110 currentWindow = NULL;
112 PANEL = "New Contour";
119 wxPanel* toolpanel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
121 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(6,2,2,2);
122 toolpanel->SetSizer(flexsizer, true);
123 toolpanel->SetAutoLayout( true );
125 wxButton* b = getButton(toolpanel);
126 b->SetClientData(&PANEL);
127 wxButton* b1 = getButton(toolpanel);
128 b1->SetClientData(&PANEL1);
129 wxButton* b2 = getButton(toolpanel);
130 b2->SetClientData(&PANEL2);
131 wxButton* b3 = getButton(toolpanel);
132 b3->SetClientData(&PANEL3);
133 wxButton* b4 = getButton(toolpanel);
134 b4->SetClientData(&PANEL4);
137 wxPanel* mentex = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
138 wxPanel* mentex1 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
139 wxPanel* mentex2 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
140 wxPanel* mentex3 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
141 wxPanel* mentex4 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(""));
143 menubar = new interfNewContourMenu(mentex, sizex, sizey, evtHandler);
144 menubar1 = new interfIOMenu(mentex1, sizex, sizey, evtHandler);
145 menubar2 = new interfEditMenu(mentex2, sizex, sizey, evtHandler);
146 menubar3 = new interfDeleteMenu(mentex3, sizex, sizey, evtHandler);
147 menubar4 = new interfToolsMenu(mentex4, sizex,sizey, evtHandler);
149 // this->initializeToolsPanel(mentex4, sizex, sizey, evtHandler);
151 statictext = getText(mentex, PANEL);
152 statictext1 = getText(mentex1, PANEL1);
153 statictext2 = getText(mentex2, PANEL2);
154 statictext3 = getText(mentex3, PANEL3);
155 statictext4 = getText(mentex4, PANEL4);
159 flexsizer->Add(b, wxFIXED_MINSIZE);
160 flexsizer->Add(setMenuTextSizer(mentex, menubar,statictext), wxFIXED_MINSIZE);
162 flexsizer->Add(b1, wxFIXED_MINSIZE);
163 flexsizer->Add(setMenuTextSizer(mentex1, menubar1,statictext1), wxFIXED_MINSIZE);
165 flexsizer->Add(b2, wxFIXED_MINSIZE);
166 flexsizer->Add(setMenuTextSizer(mentex2, menubar2,statictext2), wxFIXED_MINSIZE);
168 flexsizer->Add(b3, wxFIXED_MINSIZE);
169 flexsizer->Add(setMenuTextSizer(mentex3, menubar3,statictext3), wxFIXED_MINSIZE);
171 flexsizer->Add(b4, wxFIXED_MINSIZE);
172 flexsizer->Add(setMenuTextSizer(mentex4, menubar4,statictext4), wxFIXED_MINSIZE);
176 infoPanel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString(""));
177 wxFlexGridSizer* infosizer = new wxFlexGridSizer(5,2,2,2);
178 infoPanel->SetSizer(infosizer, true);
179 infoPanel->SetAutoLayout( true );
183 wxFlexGridSizer* mainsizer = new wxFlexGridSizer(1);
184 this->SetSizer(mainsizer, true);
185 this->SetAutoLayout( true );
188 mainsizer->Add(toolpanel,wxEXPAND);
189 mainsizer->Add(new wxSplitterWindow(this,-1, wxDefaultPosition, wxDefaultSize, wxSP_3DBORDER, wxString("")), wxEXPAND);
190 mainsizer->Add(infoPanel, wxEXPAND);
193 Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
194 Connect(b1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
195 Connect(b2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
196 Connect(b3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
197 Connect(b4->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1);
203 interfMainPanel::~interfMainPanel(void)
207 interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, wxEvtHandler * evtHandler, std::string datadir){
209 wxFrame* newframe = new wxFrame(parent, -1, wxT("New Interface"), wxPoint(1,1), wxSize(380,750),wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT);
212 if(interfmainpanel == NULL){
213 interfmainpanel = new interfMainPanel(newframe, 380, 750, evtHandler, datadir);
216 newframe->Show(TRUE);
217 return interfmainpanel;
220 interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, wxEvtHandler * evtHandler){
222 wxFrame* newframe = new wxFrame(parent, -1, wxT("New Interface"), wxPoint(1,1), wxSize(380,750),wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT );
224 if(interfmainpanel == NULL){
225 interfmainpanel = new interfMainPanel(newframe, 380, 750, evtHandler);
228 newframe->Show(TRUE);
229 return interfmainpanel;
232 interfMainPanel* interfMainPanel::getInstance(){
234 return interfmainpanel;
238 wxPanel* interfMainPanel::initializeToolsPanel(wxWindow* parent, int sizex, int sizey, wxEvtHandler * evtHandler){
241 wxPanel* panel = new wxPanel(parent, -1, wxDefaultPosition, wxSize(sizex, sizey), wxBORDER_SUNKEN, wxString("Spread"));
243 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(2,1,2,2) ;
244 panel->SetSizer(flexsizer, true);
245 panel->SetAutoLayout( true );
247 interfToolsMenu* menu = new interfToolsMenu(panel, sizex, sizey, evtHandler);
248 toolspread = new interfToolsSpreadPanel(panel, sizex, 300, evtHandler);
250 flexsizer->Add(menu, wxFIXED_MINSIZE);
251 flexsizer->Add(toolspread, wxFIXED_MINSIZE);
261 ** Adds a new checkbox to the scrolledwindow using the checkboxsizer
262 ** @Params id of contour
265 void interfMainPanel::addContourCheckBox(std::string id){
266 toolspread->addContourCheckBox(id);
270 ** Removes a checkbox from the list of checkboxes in the flexsizer (checkboxsizer)
271 ** @Params id of contour
274 void interfMainPanel::removeContourCheckBox(std::string id){
275 toolspread->removeContourCheckBox(id);
278 void interfMainPanel::onActionButtonPressed1( wxCommandEvent& event ){
279 wxButton* b = (wxButton*)event.GetEventObject();
282 std::string dstring = *((std::string*) b->GetClientData());
289 }else if( dstring==PANEL1){
292 }else if(dstring==PANEL2){
295 }else if(dstring==PANEL3){
298 }else if(dstring==PANEL4){
301 }else if(dstring==PANEL5){
306 if(b->GetLabel() == "+" ){
316 sizechange *= dmenu->GetSize().GetHeight();
317 splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+sizechange);
323 wxStaticText* interfMainPanel::getText(wxWindow* parent, std::string nom){
324 return new wxStaticText(parent, -1, wxString(nom), wxDefaultPosition,
325 wxDefaultSize, wxALIGN_CENTRE, wxString(nom));
328 wxButton* interfMainPanel::getButton(wxWindow* parent){
329 wxButton* b = new wxButton(parent, -1, wxString("-"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT,
330 wxDefaultValidator, wxString("-"));
334 wxPanel* interfMainPanel::setMenuTextSizer(wxWindow* parent, wxPanel* panel, wxStaticText* text){
336 wxFlexGridSizer* flexsizer = new wxFlexGridSizer(2,1,2,2);
337 parent->SetSizer(flexsizer, true);
338 parent->SetAutoLayout( true );
340 flexsizer->Add(text, wxFLEX_GROWMODE_ALL);
341 flexsizer->Add(panel, wxFLEX_GROWMODE_ALL);
344 return (wxPanel*)parent;
349 ** Shows the panel in the
351 void interfMainPanel::showPanel(wxWindow* panel){
353 wxSizer* sizer = infoPanel->GetSizer();
355 if(currentWindow != NULL){
356 currentWindow->Hide();
357 sizer->Remove(currentWindow);
360 currentWindow = panel;
361 currentWindow->Show(true);
363 splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+1);
364 splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()-1);
372 ** Gets the Information panel
374 wxPanel* interfMainPanel::getInfoPanel(){