#include "interfMainPanel.h" #include "interfNewContourMenu.h" #include "interfIOMenu.h" #include "interfEditMenu.h" #include "interfDeleteMenu.h" #include "interfToolsMenu.h" #include "interfToolsSpreadPanel.h" #include "interfMenuBar.h" #include "interfSegmentationMenu.h" interfMainPanel* interfMainPanel::interfmainpanel=NULL; interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtHandler * evtHandler, std::string datadir) : wxPanel(parent, -1, wxDefaultPosition, wxSize(sizex, sizey), wxBORDER_SUNKEN) { PANEL = "New Contour"; PANEL1 = "I/O"; PANEL2 = "Edit"; PANEL3 = "Delete"; PANEL4 = "Tools"; PANEL5 = "Segmentation"; splitterwindow = new wxSplitterWindow(this,-1, wxDefaultPosition, wxSize(sizex, sizey), wxSP_3DSASH, wxString("")); sizey = sizey/8; currentWindow = NULL; wxPanel* toolpanel = new wxPanel(splitterwindow, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxFlexGridSizer* flexsizer = new wxFlexGridSizer(6,2,1,1); toolpanel->SetSizer(flexsizer, true); toolpanel->SetAutoLayout( true ); wxButton* b = getButton(toolpanel); b->SetClientData(&PANEL); wxButton* b1 = getButton(toolpanel); b1->SetClientData(&PANEL1); wxButton* b2 = getButton(toolpanel); b2->SetClientData(&PANEL2); wxButton* b3 = getButton(toolpanel); b3->SetClientData(&PANEL3); wxButton* b4 = getButton(toolpanel); b4->SetClientData(&PANEL4); wxButton* b5 = getButton(toolpanel); b5->SetClientData(&PANEL5); wxPanel* mentex = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex1 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex2 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex3 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex4 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex5 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); menubar = new interfNewContourMenu(mentex, sizex, sizey, evtHandler, datadir); menubar1 = new interfIOMenu(mentex1, sizex, sizey, evtHandler, datadir); menubar2 = new interfEditMenu(mentex2, sizex, sizey, evtHandler, datadir); menubar3 = new interfDeleteMenu(mentex3, sizex, sizey, evtHandler, datadir); menubar4 = new interfToolsMenu(mentex4, sizex,sizey, evtHandler, datadir); menubar5 = new interfSegmentationMenu(mentex5, sizex,sizey, evtHandler, datadir); statictext = getText(mentex, PANEL); statictext1 = getText(mentex1, PANEL1); statictext2 = getText(mentex2, PANEL2); statictext3 = getText(mentex3, PANEL3); statictext4 = getText(mentex4, PANEL4); statictext5 = getText(mentex5, PANEL5); flexsizer->Add(b, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex, menubar,statictext), wxFIXED_MINSIZE); flexsizer->Add(b1, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex1, menubar1,statictext1), wxFIXED_MINSIZE); flexsizer->Add(b2, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex2, menubar2,statictext2), wxFIXED_MINSIZE); flexsizer->Add(b3, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex3, menubar3,statictext3), wxFIXED_MINSIZE); flexsizer->Add(b4, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex4, menubar4,statictext4), wxFIXED_MINSIZE); flexsizer->Add(b5, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex5, menubar5,statictext5), wxFIXED_MINSIZE); toolpanel->Update(); toolpanel->Layout(); infoPanel = new wxPanel(splitterwindow, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString("")); wxFlexGridSizer* infosizer = new wxFlexGridSizer(1,1,2,2); infoPanel->SetSizer(infosizer, true); infoPanel->SetAutoLayout( true ); splitterwindow->Initialize(toolpanel); splitterwindow->SplitHorizontally(toolpanel, infoPanel); Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b4->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b5->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); this->Layout(); /*sizey = sizey/8; currentWindow = NULL; PANEL = "New Contour"; PANEL1 = "I/O"; PANEL2 = "Edit"; PANEL3 = "Delete"; PANEL4 = "Tools"; wxPanel* toolpanel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxFlexGridSizer* flexsizer = new wxFlexGridSizer(6,2,2,2); toolpanel->SetSizer(flexsizer, true); toolpanel->SetAutoLayout( true ); wxButton* b = getButton(toolpanel); b->SetClientData(&PANEL); wxButton* b1 = getButton(toolpanel); b1->SetClientData(&PANEL1); wxButton* b2 = getButton(toolpanel); b2->SetClientData(&PANEL2); wxButton* b3 = getButton(toolpanel); b3->SetClientData(&PANEL3); wxButton* b4 = getButton(toolpanel); b4->SetClientData(&PANEL4); wxPanel* mentex = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex1 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex2 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex3 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); wxPanel* mentex4 = new wxPanel(toolpanel, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString("")); menubar = new interfNewContourMenu(mentex, sizex, sizey, evtHandler); menubar1 = new interfIOMenu(mentex1, sizex, sizey, evtHandler); menubar2 = new interfEditMenu(mentex2, sizex, sizey, evtHandler); menubar3 = new interfDeleteMenu(mentex3, sizex, sizey, evtHandler); menubar4 = new interfToolsMenu(mentex4, sizex,sizey, evtHandler); // this->initializeToolsPanel(mentex4, sizex, sizey, evtHandler); statictext = getText(mentex, PANEL); statictext1 = getText(mentex1, PANEL1); statictext2 = getText(mentex2, PANEL2); statictext3 = getText(mentex3, PANEL3); statictext4 = getText(mentex4, PANEL4); flexsizer->Add(b, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex, menubar,statictext), wxFIXED_MINSIZE); flexsizer->Add(b1, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex1, menubar1,statictext1), wxFIXED_MINSIZE); flexsizer->Add(b2, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex2, menubar2,statictext2), wxFIXED_MINSIZE); flexsizer->Add(b3, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex3, menubar3,statictext3), wxFIXED_MINSIZE); flexsizer->Add(b4, wxFIXED_MINSIZE); flexsizer->Add(setMenuTextSizer(mentex4, menubar4,statictext4), wxFIXED_MINSIZE); toolpanel->Layout(); infoPanel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxNO_BORDER, wxString("")); wxFlexGridSizer* infosizer = new wxFlexGridSizer(5,2,2,2); infoPanel->SetSizer(infosizer, true); infoPanel->SetAutoLayout( true ); wxFlexGridSizer* mainsizer = new wxFlexGridSizer(1); this->SetSizer(mainsizer, true); this->SetAutoLayout( true ); mainsizer->Add(toolpanel,wxEXPAND); mainsizer->Add(new wxSplitterWindow(this,-1, wxDefaultPosition, wxDefaultSize, wxSP_3DBORDER, wxString("")), wxEXPAND); mainsizer->Add(infoPanel, wxEXPAND); Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b1->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b2->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b3->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); Connect(b4->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); this->Layout();*/ } interfMainPanel::~interfMainPanel(void) { } interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, wxEvtHandler * evtHandler, std::string datadir){ 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); if(interfmainpanel == NULL){ interfmainpanel = new interfMainPanel(newframe, 380, 750, evtHandler, datadir); } newframe->Show(TRUE); return interfmainpanel; } interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, wxEvtHandler * evtHandler){ 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 ); if(interfmainpanel == NULL){ interfmainpanel = new interfMainPanel(newframe, 380, 750, evtHandler); } newframe->Show(TRUE); return interfmainpanel; } interfMainPanel* interfMainPanel::getInstance(){ return interfmainpanel; } wxPanel* interfMainPanel::initializeToolsPanel(wxWindow* parent, int sizex, int sizey, wxEvtHandler * evtHandler){ wxPanel* panel = new wxPanel(parent, -1, wxDefaultPosition, wxSize(sizex, sizey), wxBORDER_SUNKEN, wxString("Spread")); wxFlexGridSizer* flexsizer = new wxFlexGridSizer(2,1,2,2) ; panel->SetSizer(flexsizer, true); panel->SetAutoLayout( true ); interfToolsMenu* menu = new interfToolsMenu(panel, sizex, sizey, evtHandler); toolspread = new interfToolsSpreadPanel(panel, sizex, 300, evtHandler); flexsizer->Add(menu, wxFIXED_MINSIZE); flexsizer->Add(toolspread, wxFIXED_MINSIZE); panel->Layout(); return panel; } /** ** Adds a new checkbox to the scrolledwindow using the checkboxsizer ** @Params id of contour ** **/ void interfMainPanel::addContourCheckBox(std::string id){ toolspread->addContourCheckBox(id); } /** ** Removes a checkbox from the list of checkboxes in the flexsizer (checkboxsizer) ** @Params id of contour ** **/ void interfMainPanel::removeContourCheckBox(std::string id){ toolspread->removeContourCheckBox(id); } void interfMainPanel::onActionButtonPressed1( wxCommandEvent& event ){ wxButton* b = (wxButton*)event.GetEventObject(); wxPanel* dmenu; wxStaticText* text; std::string dstring = *((std::string*) b->GetClientData()); int sizechange=0; if(dstring==PANEL){ dmenu = menubar; text = statictext; }else if( dstring==PANEL1){ dmenu = menubar1; text = statictext1; }else if(dstring==PANEL2){ dmenu = menubar2; text = statictext2; }else if(dstring==PANEL3){ dmenu = menubar3; text = statictext3; }else if(dstring==PANEL4){ dmenu = menubar4; text = statictext4; }else if(dstring==PANEL5){ dmenu = menubar5; text = statictext5; } if(b->GetLabel() == "+" ){ dmenu->Show(true); sizechange = 1; b->SetLabel("-"); }else{ dmenu->Show(false); sizechange = -1; b->SetLabel("+"); } sizechange *= dmenu->GetSize().GetHeight(); splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+sizechange); this->Layout(); this->Refresh(); } wxStaticText* interfMainPanel::getText(wxWindow* parent, std::string nom){ return new wxStaticText(parent, -1, wxString(nom), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, wxString(nom)); } wxButton* interfMainPanel::getButton(wxWindow* parent){ wxButton* b = new wxButton(parent, -1, wxString("-"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, wxString("-")); return b; } wxPanel* interfMainPanel::setMenuTextSizer(wxWindow* parent, wxPanel* panel, wxStaticText* text){ wxFlexGridSizer* flexsizer = new wxFlexGridSizer(2,1,2,2); parent->SetSizer(flexsizer, true); parent->SetAutoLayout( true ); flexsizer->Add(text, wxFLEX_GROWMODE_ALL); flexsizer->Add(panel, wxFLEX_GROWMODE_ALL); parent->Layout(); return (wxPanel*)parent; } /** ** Shows the panel in the **/ void interfMainPanel::showPanel(wxWindow* panel){ wxSizer* sizer = infoPanel->GetSizer(); if(currentWindow != NULL){ currentWindow->Hide(); sizer->Remove(currentWindow); } sizer->Add(panel); currentWindow = panel; currentWindow->Show(true); splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+1); splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()-1); this->Layout(); this->Refresh(); } /** ** Gets the Information panel **/ wxPanel* interfMainPanel::getInfoPanel(){ return infoPanel; }