#include "wxManualPaintPanel.h" #include wxManualPaintPanel::wxManualPaintPanel(wxWindow * parent) : wxPanel(parent, -1) { wxPanel *panel = this; wxSizer *sizer = NULL; // Widget interface 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"); _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"); _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("Brush"); lstBrushTool[1]=_T("Fill"); _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")); btnCopy->Disable(); wxButton *btnUndo = new wxButton( panel, -1, _T("Undo")); btnUndo->Disable(); 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(_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(_rbBrushTool, 1, wxGROW ); sizer1->Add(new wxStaticText(panel,-1,_T(" "))); sizer1->Add(txtGrayLevel); sizer1->Add(_sldGrayLevel, 1, wxGROW ); sizer1->Add(_graylevelCtrl); sizer1->Add(new wxStaticText(panel,-1,_T(" "))); sizer1->Add(_rb2D3D, 1, wxGROW ); sizer1->Add(new wxStaticText(panel,-1,_T(" "))); sizer1->Add(_txtBrushSize); sizer1->Add(_sldBrushSize, 1, wxGROW ); sizer1->Add(new wxStaticText(panel,-1,_T(" "))); 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(" "))); sizer1->Add(btnUndo, 1, wxGROW ); sizer = sizer1; panel->SetSizer(sizer); panel->SetAutoLayout(true); panel->Layout(); } //--------------------------------------------------------------------------- wxManualPaintPanel::~wxManualPaintPanel() { } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnBrushSize(wxScrollEvent& event) { SetBrushSize( _sldBrushSize->GetValue() ); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnSldGrayLevel(wxScrollEvent& event) { SetGrayLevel( (double)(_sldGrayLevel->GetValue()) ); wxString text; text.Printf( wxT("%d"), _sldGrayLevel->GetValue() ); _graylevelCtrl->SetValue(text); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnCtrTxtGrayLevel(wxCommandEvent &event) { double graylevel; 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) { printf("EED wxManualPaintPanel::OnBrushForm BrushForm=%d \n", _rbBrushForm->GetSelection()); SetBrushForm( _rbBrushForm->GetSelection() ); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnBrushTool(wxCommandEvent &event) { DisableControls(); SetBrushTool( _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(); } } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnCopy(wxCommandEvent &event) { } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnUndo(wxCommandEvent &event) { }