X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FmanualPaint%2FwxManualPaintPanel.cpp;h=78f1d036f0ef660d83cd37d1279542b56aaa7bd0;hb=3eef3f302abd6996a4eaebb0536770bca9bf428d;hp=40dcd5f8b82194a728de194601cc10de664a66f7;hpb=965c602117e9de99019d49bd78ca1d707a1a6bd2;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp index 40dcd5f..78f1d03 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp @@ -6,67 +6,106 @@ wxManualPaintPanel::wxManualPaintPanel(wxWindow * parent) : wxPanel(parent, -1) { - wxPanel *panel = this; - wxSizer *sizer = NULL; + wxPanel *panel = this; + wxSizer *sizer = NULL; // Widget interface - wxStaticText *tittleText = new wxStaticText(panel, -1, _T(" Manual Paint")); - wxStaticText *txtBrushSize = new wxStaticText(panel, -1, wxString(_T(" Brush size "))); - sldBrushSize = new wxSlider(panel, -1, 1, 1, 20, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); - wxStaticText *txtGrayLevel = new wxStaticText(panel, -1, wxString(_T(" Gray Level "))); - sldGrayLevel = new wxSlider(panel, -1, 0, 0, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); - graylevelCtrl = new wxTextCtrl(panel , -1); + wxStaticText *tittleText = new wxStaticText(panel, -1, _T(" Manual Paint")); + _txtBrushSize = new wxStaticText(panel, -1, wxString(_T(" Brush size "))); + _sldBrushSize = new wxSlider(panel, -1, 1, 1, 20, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); + wxStaticText *txtGrayLevel = new wxStaticText(panel, -1, wxString(_T(" Gray Level "))); + _sldGrayLevel = new wxSlider(panel, -1, 0, 0, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); + _graylevelCtrl = new wxTextCtrl(panel , -1); + _txtToleranceFill = new wxStaticText(panel, -1, wxString(_T(" Tolerance fill "))); + _sldToleranceFill = new wxSlider(panel, -1, 50, 0, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); + _tolerancefillCtrl = new wxTextCtrl(panel , -1,_T("50") ); + _txtDistanceFill = new wxStaticText(panel, -1, wxString(_T(" Distance fill "))); + _sldDistanceFill = new wxSlider(panel, -1, 500, 1, 500, wxDefaultPosition, wxDefaultSize, wxSL_LABELS); + _distancefillCtrl = new wxTextCtrl(panel , -1,_T("500") ); + wxString lst2D3D[2]; - lst2D3D[0]=_T("2D circle"); - lst2D3D[1]=_T("3D sphere"); - wxRadioBox * rb2D3D = new wxRadioBox(panel, -1, _T("2D / 3D"), wxDefaultPosition, wxSize(270,45), 2 , lst2D3D, 2, wxRA_SPECIFY_COLS); - rb2D3D->SetSelection(1); - rb2D3D->Disable(); + lst2D3D[0]=_T("2D"); + lst2D3D[1]=_T("3D"); + _rb2D3D = new wxRadioBox(panel, -1, _T("2D / 3D"), wxDefaultPosition, wxSize(270,45), 2 , lst2D3D, 2, wxRA_SPECIFY_COLS); + _rb2D3D->SetSelection(1); wxString lstBrushForm[2]; lstBrushForm[0]=_T("rectangle/cube"); lstBrushForm[1]=_T("circle/sphere"); - wxRadioBox * rbBrushForm = new wxRadioBox(panel, -1, _T("Brush form"), wxDefaultPosition, wxSize(270,45), 2 , lstBrushForm, 2, wxRA_SPECIFY_COLS); - rbBrushForm->Disable(); + _rbBrushForm = new wxRadioBox(panel, -1, _T("Brush form"), wxDefaultPosition, wxSize(270,45), 2 , lstBrushForm, 2, wxRA_SPECIFY_COLS); + + _txtToleranceFill->Disable(); + _sldToleranceFill->Disable(); + _tolerancefillCtrl->Disable(); + + _txtDistanceFill->Disable(); + _sldDistanceFill->Disable(); + _distancefillCtrl->Disable(); wxString lstBrushTool[2]; - lstBrushTool[0]=_T("Pensil"); + lstBrushTool[0]=_T("Brush"); lstBrushTool[1]=_T("Fill"); - wxRadioBox *rbBrushTool = new wxRadioBox(panel, -1, _T("Brush tool"), wxDefaultPosition, wxSize(270,45), 2 , lstBrushTool, 2, wxRA_SPECIFY_COLS); - rbBrushTool->Disable(); + _rbBrushTool = new wxRadioBox(panel, -1, _T("Brush tool"), wxDefaultPosition, wxSize(270,45), 2 , lstBrushTool, 2, wxRA_SPECIFY_COLS); - wxButton *btnCopy = new wxButton( panel, -1, _T("Copy")); + wxButton *btnCopy = new wxButton( panel, -1, _T("Copy")); btnCopy->Disable(); - wxButton *btnUndo = new wxButton( panel, -1, _T("Undo")); + wxButton *btnUndo = new wxButton( panel, -1, _T("Undo")); btnUndo->Disable(); - Connect(sldBrushSize->GetId() , wxEVT_SCROLL_THUMBRELEASE , (wxObjectEventFunction) &wxManualPaintPanel::OnBrushSize); - Connect(sldGrayLevel->GetId() , wxEVT_SCROLL_THUMBRELEASE , (wxObjectEventFunction) &wxManualPaintPanel::OnSldGrayLevel); - Connect(graylevelCtrl->GetId() , wxEVT_COMMAND_TEXT_UPDATED , (wxObjectEventFunction) &wxManualPaintPanel::OnCtrTxtGrayLevel); + Connect(_sldBrushSize->GetId() , wxEVT_SCROLL_THUMBRELEASE , (wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) (&wxManualPaintPanel::OnBrushSize)); + + Connect(_sldGrayLevel->GetId() , wxEVT_SCROLL_THUMBRELEASE , (wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &wxManualPaintPanel::OnSldGrayLevel); + Connect(_graylevelCtrl->GetId() , wxEVT_COMMAND_TEXT_UPDATED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtGrayLevel); - Connect(rb2D3D->GetId() , wxEVT_COMMAND_RADIOBOX_SELECTED , (wxObjectEventFunction) &wxManualPaintPanel::On2D3D); - Connect(rbBrushForm->GetId() , wxEVT_COMMAND_RADIOBOX_SELECTED , (wxObjectEventFunction) &wxManualPaintPanel::OnBrushForm); - Connect(rbBrushTool->GetId() , wxEVT_COMMAND_RADIOBOX_SELECTED , (wxObjectEventFunction) &wxManualPaintPanel::OnBrushTool); - Connect(btnCopy->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &wxManualPaintPanel::OnCopy); - Connect(btnUndo->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction) &wxManualPaintPanel::OnUndo); + Connect(_sldToleranceFill->GetId() , wxEVT_SCROLL_THUMBRELEASE , (wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &wxManualPaintPanel::OnSldToleranceFill); + Connect(_tolerancefillCtrl->GetId() , wxEVT_COMMAND_TEXT_UPDATED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtToleranceFill); + + Connect(_sldDistanceFill->GetId() , wxEVT_SCROLL_THUMBRELEASE , (wxObjectEventFunction)(void (wxPanel::*)(wxScrollEvent&)) &wxManualPaintPanel::OnSldDistanceFill); + Connect(_distancefillCtrl->GetId() , wxEVT_COMMAND_TEXT_UPDATED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtDistanceFill); + + Connect(_rb2D3D->GetId() , wxEVT_COMMAND_RADIOBOX_SELECTED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::On2D3D); + Connect(_rbBrushForm->GetId() , wxEVT_COMMAND_RADIOBOX_SELECTED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::OnBrushForm); + Connect(_rbBrushTool->GetId() , wxEVT_COMMAND_RADIOBOX_SELECTED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::OnBrushTool); + Connect(btnCopy->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::OnCopy); + Connect(btnUndo->GetId() , wxEVT_COMMAND_BUTTON_CLICKED , (wxObjectEventFunction)(void (wxPanel::*)(wxCommandEvent&)) &wxManualPaintPanel::OnUndo); wxFlexGridSizer *sizer1 = new wxFlexGridSizer(1); + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); sizer1->Add(tittleText); + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); - sizer1->Add(txtBrushSize); - sizer1->Add(sldBrushSize, 1, wxGROW ); + sizer1->Add(_rbBrushTool, 1, wxGROW ); + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); sizer1->Add(txtGrayLevel); - sizer1->Add(sldGrayLevel, 1, wxGROW ); - sizer1->Add(graylevelCtrl); + sizer1->Add(_sldGrayLevel, 1, wxGROW ); + sizer1->Add(_graylevelCtrl); + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); - sizer1->Add(rb2D3D, 1, wxGROW ); + sizer1->Add(_rb2D3D, 1, wxGROW ); + + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); - sizer1->Add(rbBrushForm, 1, wxGROW ); + sizer1->Add(_txtBrushSize); + sizer1->Add(_sldBrushSize, 1, wxGROW ); + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); - sizer1->Add(rbBrushTool, 1, wxGROW ); + sizer1->Add(_rbBrushForm, 1, wxGROW ); + + + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); + sizer1->Add(_txtToleranceFill); + sizer1->Add(_sldToleranceFill, 1, wxGROW ); + sizer1->Add(_tolerancefillCtrl); + + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); + sizer1->Add(_txtDistanceFill); + sizer1->Add(_sldDistanceFill, 1, wxGROW ); + sizer1->Add(_distancefillCtrl); + + sizer1->Add(new wxStaticText(panel,-1,_T(" "))); sizer1->Add(btnCopy, 1, wxGROW ); sizer1->Add(new wxStaticText(panel,-1,_T(" "))); @@ -86,49 +125,125 @@ wxManualPaintPanel::~wxManualPaintPanel() //--------------------------------------------------------------------------- void wxManualPaintPanel::OnBrushSize(wxScrollEvent& event) { - printf("EED %p wxManualPaintPanel::OnBrushSize\n", this); - SetBrushSize( sldBrushSize->GetValue() ); + SetBrushSize( _sldBrushSize->GetValue() ); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnSldGrayLevel(wxScrollEvent& event) { - printf("EED %p wxManualPaintPanel::OnGrayLevel\n", this); - SetGrayLevel( (double)(sldGrayLevel->GetValue()) ); + SetGrayLevel( (double)(_sldGrayLevel->GetValue()) ); wxString text; - text.Printf( wxT("%d"), sldGrayLevel->GetValue() ); - graylevelCtrl->SetValue(text); + text.Printf( wxT("%d"), _sldGrayLevel->GetValue() ); + _graylevelCtrl->SetValue(text); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnCtrTxtGrayLevel(wxCommandEvent &event) { - printf("EED %p wxManualPaintPanel::OnCtrTxtGrayLevel\n", this); - double graylevel; - wxString text=graylevelCtrl->GetValue(); + wxString text=_graylevelCtrl->GetValue(); if (text.ToDouble(&graylevel)) { SetGrayLevel( graylevel ); } } +//--------------------------------------------------------------------------- +void wxManualPaintPanel::OnSldDistanceFill(wxScrollEvent& event) +{ + SetDistanceFill( (double)(_sldDistanceFill->GetValue()) ); + + wxString text; + text.Printf( wxT("%d"), _sldDistanceFill->GetValue() ); + _distancefillCtrl->SetValue(text); +} + +//--------------------------------------------------------------------------- +void wxManualPaintPanel::OnCtrTxtDistanceFill(wxCommandEvent &event) +{ + double distancefill; + wxString text=_distancefillCtrl->GetValue(); + if (text.ToDouble(&distancefill)) + { + SetDistanceFill( distancefill ); + } +} + +//--------------------------------------------------------------------------- +void wxManualPaintPanel::OnSldToleranceFill(wxScrollEvent& event) +{ + SetToleranceFill( (double)(_sldToleranceFill->GetValue()) ); + wxString text; + text.Printf( wxT("%d"), _sldToleranceFill->GetValue() ); + _tolerancefillCtrl->SetValue(text); +} + +//--------------------------------------------------------------------------- +void wxManualPaintPanel::OnCtrTxtToleranceFill(wxCommandEvent &event) +{ + double tolerance; + wxString text=_tolerancefillCtrl->GetValue(); + if (text.ToDouble(&tolerance)) + { + SetToleranceFill( tolerance ); + } +} + + + +//--------------------------------------------------------------------------- +void wxManualPaintPanel::DisableControls() +{ + _txtBrushSize->Disable(); + _sldBrushSize->Disable(); + _rbBrushForm->Disable(); + + _txtToleranceFill->Disable(); + _sldToleranceFill->Disable(); + _tolerancefillCtrl->Disable(); + + _txtDistanceFill->Disable(); + _sldDistanceFill->Disable(); + _distancefillCtrl->Disable(); +} //--------------------------------------------------------------------------- void wxManualPaintPanel::On2D3D(wxCommandEvent &event) { + Set2D3D( _rb2D3D->GetSelection() ); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnBrushForm(wxCommandEvent &event) { + SetBrushForm( _rbBrushForm->GetSelection() ); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnBrushTool(wxCommandEvent &event) { + DisableControls(); + SetTool( _rbBrushTool->GetSelection() ); + + if (_rbBrushTool->GetSelection()==0) //Brush tool + { + _txtBrushSize->Enable(); + _sldBrushSize->Enable(); + _rbBrushForm->Enable(); + } + + if (_rbBrushTool->GetSelection()==1) //Fill tool + { + _txtToleranceFill->Enable(); + _sldToleranceFill->Enable(); + _tolerancefillCtrl->Enable(); + + _txtDistanceFill->Enable(); + _sldDistanceFill->Enable(); + _distancefillCtrl->Enable(); + } } //---------------------------------------------------------------------------