X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FInterface_Icons_NDimensions%2FinterfMainPanel.cxx;h=4b8c16e9037c8b040bbeb4340c531f02a7b5d41b;hb=d20aa4c87071dd7795678e7716c6f8ba248cebc1;hp=21b1c630403aecab2f414f13af5a19aaa02e46c7;hpb=6e3c929c883c405e0075fa8df10b12a935979367;p=creaContours.git diff --git a/lib/Interface_Icons_NDimensions/interfMainPanel.cxx b/lib/Interface_Icons_NDimensions/interfMainPanel.cxx index 21b1c63..4b8c16e 100644 --- a/lib/Interface_Icons_NDimensions/interfMainPanel.cxx +++ b/lib/Interface_Icons_NDimensions/interfMainPanel.cxx @@ -27,13 +27,18 @@ interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtH segmentPanelITK = NULL; configPanel = NULL; spreadPanel = NULL; - infoWin=NULL; - informationPanel=NULL; + infoWin = NULL; + informationPanel = NULL; + mirrorPanel = NULL; + thresholdPanel = NULL; + currentWindow = NULL; splitterwindow = new wxSplitterWindow(this,-1, wxDefaultPosition, wxSize(sizex, sizey), wxSP_3DSASH, wxString(_T(""))); - + + splitterwindow->SetMinimumPaneSize( 10 ); sizey = sizey/8; - currentWindow = NULL; + + wxPanel* toolpanel = new wxPanel(splitterwindow, -1, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE, wxString(_T(""))); @@ -102,6 +107,7 @@ interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtH infoPanel->SetAutoLayout( true ); splitterwindow->Initialize(toolpanel); + splitterwindow->SetSashGravity(1); splitterwindow->SplitHorizontally(toolpanel, infoPanel); Connect(b->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&interfMainPanel::onActionButtonPressed1); @@ -112,98 +118,6 @@ interfMainPanel::interfMainPanel(wxWindow * parent, int sizex, int sizey, wxEvtH 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) @@ -212,11 +126,11 @@ interfMainPanel::~interfMainPanel(void) interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, std::string datadir, 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); + wxFrame* newframe = new wxFrame(parent, -1, wxT(" Contour Tools "), wxPoint(25,50), wxSize(350,850),wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT); if(interfmainpanel == NULL){ - interfmainpanel = new interfMainPanel(newframe, 380, 750, evtHandler, datadir); + interfmainpanel = new interfMainPanel(newframe, 350, 850, evtHandler, datadir); } newframe->Show(TRUE); @@ -225,21 +139,27 @@ interfMainPanel* interfMainPanel::getInstance(wxWindow* parent, std::string data 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 ); + wxFrame* newframe = new wxFrame(parent, -1, wxT(" Contour Tools "), wxPoint(25,50), wxSize(350,850),wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT ); if(interfmainpanel == NULL){ - interfmainpanel = new interfMainPanel(newframe, 380, 750, evtHandler); + interfmainpanel = new interfMainPanel(newframe, 350, 850, evtHandler); } newframe->Show(TRUE); return interfmainpanel; } -interfMainPanel* interfMainPanel::getInstance(){ +interfMainPanel* interfMainPanel::getInstance() +{ return interfmainpanel; } +void interfMainPanel :: resetInstance() +{ + delete interfmainpanel; + interfmainpanel = NULL; +} wxPanel* interfMainPanel::initializeToolsPanel(wxWindow* parent, int sizex, int sizey, wxEvtHandler * evtHandler){ @@ -355,7 +275,8 @@ wxPanel* interfMainPanel::setMenuTextSizer(wxWindow* parent, wxPanel* panel, wxS /** ** Shows the panel in the **/ -void interfMainPanel::showPanel(wxWindow* panel){ +void interfMainPanel::showPanel(wxWindow* panel) +{ wxContourMainFrame::getInstance()->showAxis(false); wxSizer* sizer = infoPanel->GetSizer(); @@ -374,7 +295,31 @@ void interfMainPanel::showPanel(wxWindow* panel){ infoPanel->Refresh(); this->Layout(); this->Refresh(); +} +/** +** Hide the panel in the +**/ +void interfMainPanel::hidePanel( ){ + wxContourMainFrame::getInstance()->showAxis(false); + wxSizer* sizer = infoPanel->GetSizer(); + + if(currentWindow != NULL){ + currentWindow->Hide(); + sizer->Remove(currentWindow); + } + wxPanel * emptyPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T(""))); + sizer->Add(emptyPanel); + currentWindow = emptyPanel; + currentWindow->Show(true); + + splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()+1); + splitterwindow->SetSashPosition(splitterwindow->GetSashPosition()-1); + + infoPanel->Layout(); + infoPanel->Refresh(); + this->Layout(); + this->Refresh(); } /** @@ -396,6 +341,10 @@ void interfMainPanel::onCreateContourCircle( ){ wxContourMainFrame::getInstance()->showAxis(false); wxContourMainFrame::getInstance()->onCreateContourCircle(); } +void interfMainPanel::onCreateContourLine( ){ + wxContourMainFrame::getInstance()->showAxis(false); + wxContourMainFrame::getInstance()->onCreateContourLine(); +} void interfMainPanel::onCreateContoursBullEye(wxPanel* panBull){ wxContourMainFrame::getInstance()->showAxis(false); wxContourMainFrame::getInstance()->onCreateContourBullEye(panBull); @@ -439,10 +388,21 @@ vtkImageData* interfMainPanel::getImageData(){ return wxContourMainFrame::getInstance()->getImageData(); } -void interfMainPanel::onSegmentationOneSlice(int isovalue,int sampling,int method){ +void interfMainPanel::getImageRange(double range[2] ) +{ + vtkImageData * img = getImageData(); + img->GetScalarRange(range); +} + +void interfMainPanel::onSegmentationOneSlice(int isovalue,int sampling,int method) +{ wxContourMainFrame::getInstance()->onSegmentationOneSlice(isovalue, sampling, method); } +void interfMainPanel::onSegmentationOneSliceITK(wxString distance, wxString sigma, wxString alfa, wxString beta, wxString propagation, wxString iterations, wxString inflation){ + wxContourMainFrame::getInstance()->onSegmentationOneSliceITK(distance, sigma, alfa, beta, propagation, iterations, inflation); +} + int interfMainPanel::GetImageDataSizeZ(){ return wxContourMainFrame::getInstance()->GetImageDataSizeZ(); } @@ -455,6 +415,16 @@ void interfMainPanel::onSegmentationAllSlice(int minZ,int maxZ,int isovalue,int wxContourMainFrame::getInstance()->onSegmentationAllSlice(minZ, maxZ,isovalue,sampling,method); } +void interfMainPanel::onMirror() +{ + wxContourMainFrame::getInstance()->onMirror(); +} + +void interfMainPanel::onMirrorChangeWidth(int width) +{ + wxContourMainFrame::getInstance()->refLineChangeWidth(width); +} + void interfMainPanel::setLabelSegmentationPanelVTK(wxString tmpString){ ((interfSegmentationPanelVTK*)segmentationPanel)->setLabel(tmpString); } @@ -504,8 +474,8 @@ void interfMainPanel::onSegmentationPressedITK(){ segmentPanelITK->Layout(); } showPanel(segmentPanelITK); - //contourevent->showAxis(true); - //axisshown = true; + wxContourMainFrame::getInstance()->showAxis(true); + axisshown = true; } void interfMainPanel::onRigidPressed(){ @@ -611,7 +581,7 @@ void interfMainPanel::onInformationPressed(){ infoWin->SetAutoLayout( true ); infoWin->Layout(); - infoWin->Show(); + infoWin->Show(); }else { @@ -638,7 +608,9 @@ void interfMainPanel::onInformationContourLabels(int typeContourGroup,int select } void interfMainPanel::setStringInfoPanel(wxString tmpString){ - ((interfInformationPanel*)informationPanel)->setStringInfoPanel(tmpString); + if(informationPanel!=NULL){ + ((interfInformationPanel*)informationPanel)->setStringInfoPanel(tmpString); + } } void interfMainPanel::setRowLabelInfoPanel(int z, wxString tempString){ @@ -670,3 +642,95 @@ wxString interfMainPanel::getCellValue(int j,int i){ return ((interfInformationPanel*)informationPanel)->getCellValue(j, i ); } +void interfMainPanel::onSnakePressed(){ + wxContourMainFrame::getInstance()->onSnakePressed(); +} + +void interfMainPanel::onMirrorPressed(){ + if(mirrorPanel==NULL) + { + + mirrorPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T(""))); + wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1); + mirrorPanel->SetSizer(flexsizer, true); + mirrorPanel->SetAutoLayout( true ); + panelMirror = new interfMirrorPanel(mirrorPanel); + + wxStaticText* stattext = new wxStaticText(mirrorPanel, -1, wxString(_T(" Mirroring Tool ")), wxDefaultPosition, + wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T(""))); + + flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE); + flexsizer->Add(panelMirror, wxEXPAND); + mirrorPanel->Layout(); + + refLineShown=true; + + showPanel(mirrorPanel); + wxContourMainFrame::getInstance()->referenceLine(); + } + + else + { + if(refLineShown) + { + wxContourMainFrame::getInstance()->refLineHide(); + refLineShown=false; + + hidePanel(); + } + + else if (!refLineShown) + { + wxContourMainFrame::getInstance()->refLineShow(); + refLineShown=true; + + showPanel(mirrorPanel); + } + } + +} + + +void interfMainPanel::onThreshold(int minVal, int maxVal) +{ + wxContourMainFrame::getInstance()->onThreshold(minVal, maxVal); +} + +void interfMainPanel::onThresholdPressed() +{ + if(thresholdPanel==NULL) + { + + thresholdPanel = new wxPanel(interfMainPanel::getInstance()->getInfoPanel(), -1, wxDefaultPosition, wxDefaultSize, wxBORDER_STATIC, wxString(_T(""))); + wxFlexGridSizer* flexsizer = new wxFlexGridSizer(1); + thresholdPanel->SetSizer(flexsizer, true); + thresholdPanel->SetAutoLayout( true ); + panelThreshold = new interfThresholdPanel(thresholdPanel); + + wxStaticText* stattext = new wxStaticText(thresholdPanel, -1, wxString(_T(" Threshold Tool ")), wxDefaultPosition, + wxDefaultSize, wxALIGN_CENTRE|wxBORDER_SIMPLE|wxFULL_REPAINT_ON_RESIZE, wxString(_T(""))); + + flexsizer->Add(stattext,wxALIGN_CENTER | wxALIGN_CENTRE); + flexsizer->Add(panelThreshold, wxEXPAND); + thresholdPanel->Layout(); + showPanel(thresholdPanel); + } + + + else + { + if(thresholdShown) + { + thresholdShown=false; + panelThreshold->onThresholdStop(); + + hidePanel(); + } + + else if (!thresholdShown) + { + thresholdShown=true; + showPanel(thresholdPanel); + } + } +}