#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") ); //DFCH -- BarSlices double range[ 2 ]; GetScalarRange( range ); int min = 0; //range[0]; int max = 6000; //range[1]; _mBarSlices = new mBarRange( panel, 70, 65 ); _mBarSlices->SetMin( 0 ); _mBarSlices->SetStart( 0 ); _mBarSlices->SetOrientation( true ); _mBarSlices->setActiveStateTo( true ); _mBarSlices->setVisibleLabels( true ); _mBarSlices->setDeviceEndMargin( 10 ); _mBarSlices->setDeviceBlitStart( 10, 10 ); _mBarSlices->setIfWithActualDrawed( false ); _mBarSlices->setRepresentedValues( min, max ); _mBarSlices->SetStart( min ); _mBarSlices->SetEnd( max ); _mBarSlices->Update( ); //DFCH -- End BarSlices wxString lst2D3D[ 2 ]; 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"); _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 ); _btnCopy = new wxButton( panel, -1, _T("Copy") ); _btnCopy->Disable( ); _btnUndo = new wxButton( panel, -1, _T("Undo") ); _btnRedo = new wxButton( panel, -1, _T("Redo") ); //btnUndo->Disable(); 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 ); wxFlexGridSizer *sizerGrayLevel = new wxFlexGridSizer( 2 ); sizerGrayLevel->Add( txtGrayLevel ); sizerGrayLevel->Add( _graylevelCtrl ); sizer1->Add( sizerGrayLevel, 1, wxGROW ); sizer1->Add( _sldGrayLevel, 1, wxGROW ); sizer1->Add( new wxStaticText( this, -1, _T( "Select Range" ) ), 1, wxGROW ); sizer1->Add( _mBarSlices, 1, wxGROW ); 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 ); wxFlexGridSizer *sizerTolerance = new wxFlexGridSizer( 2 ); sizerTolerance->Add( _txtToleranceFill ); sizerTolerance->Add( _tolerancefillCtrl ); sizer1->Add( sizerTolerance ); sizer1->Add( _sldToleranceFill, 1, wxGROW ); wxFlexGridSizer *sizerDistance = new wxFlexGridSizer( 2 ); sizerDistance->Add( _txtDistanceFill ); sizerDistance->Add( _distancefillCtrl ); sizer1->Add( sizerDistance ); sizer1->Add( _sldDistanceFill, 1, wxGROW ); sizer1->Add( new wxStaticText( panel, -1, _T(" ") ) ); sizer1->Add( _btnCopy, 1, wxGROW ); sizer1->Add( new wxStaticText( panel, -1, _T(" ") ) ); sizer1->Add( _btnUndo, 1, wxGROW ); sizer1->Add( _btnRedo, 1, wxGROW ); sizer = sizer1; this->ConnectComponents( ); //DFCH panel->SetSizer( sizer ); panel->SetAutoLayout( true ); panel->Layout( ); } //--------------------------------------------------------------------------- wxManualPaintPanel::~wxManualPaintPanel( ) { } //-------------------------------------------------------------------------- /* * The following function allows the management of the events */ void wxManualPaintPanel::ConnectComponents( ) //DFCH { this->Connect( _sldBrushSize->GetId( ), wxEVT_SCROLL_THUMBRELEASE, (wxObjectEventFunction) (void(wxPanel::*)( wxScrollEvent& )) (&wxManualPaintPanel::OnBrushSize) );this ->Connect (_sldGrayLevel->GetId(), wxEVT_SCROLL_THUMBRELEASE, (wxObjectEventFunction) (void(wxPanel::*)( wxScrollEvent&)) &wxManualPaintPanel::OnSldGrayLevel); this->Connect ( _graylevelCtrl->GetId(), wxEVT_COMMAND_TEXT_UPDATED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtGrayLevel); this->Connect ( _sldToleranceFill->GetId(), wxEVT_SCROLL_THUMBRELEASE, (wxObjectEventFunction) (void(wxPanel::*)( wxScrollEvent&)) &wxManualPaintPanel::OnSldToleranceFill);this->Connect ( _tolerancefillCtrl->GetId(), wxEVT_COMMAND_TEXT_UPDATED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtToleranceFill); this->Connect ( _sldDistanceFill->GetId(), wxEVT_SCROLL_THUMBRELEASE, (wxObjectEventFunction) (void(wxPanel::*)( wxScrollEvent&)) &wxManualPaintPanel::OnSldDistanceFill);this->Connect ( _distancefillCtrl->GetId(), wxEVT_COMMAND_TEXT_UPDATED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnCtrTxtDistanceFill); this->Connect ( _rb2D3D->GetId(), wxEVT_COMMAND_RADIOBOX_SELECTED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::On2D3D);this->Connect ( _rbBrushForm->GetId(), wxEVT_COMMAND_RADIOBOX_SELECTED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnBrushForm);this->Connect ( _rbBrushTool->GetId(), wxEVT_COMMAND_RADIOBOX_SELECTED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnBrushTool);this->Connect ( _btnCopy->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnCopy); this->Connect ( _btnUndo->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnUndo); this->Connect(_btnRedo->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction) (void(wxPanel::*)( wxCommandEvent&)) &wxManualPaintPanel::OnRedo); //DFCH this->Connect( _mBarSlices->GetId(), wxEVT_TSBAR, (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onBarrange); // Connect(modBarRange->GetId(),98765,(wxObjectEventFunction) (wxCommandEventFunction) &wxWidgetSliderMinMax::onActualChange_Bar ); this->Connect( _mBarSlices->GetId(), wxEVT_TSBAR_ACTUAL, (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onActualChange_Bar); this->Connect( _mBarSlices->GetId(), wxEVT_TSBAR_START, (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onStartChange_Bar); this->Connect( _mBarSlices->GetId(), wxEVT_TSBAR_END, (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onEndChange_Bar); this->Connect( _mBarSlices->GetId(), wxEVT_SELECTION_END, (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onSelectionEnd); this->Connect( _mBarSlices->GetId(), wxEVT_TSBAR_MOVED, (wxObjectEventFunction) (wxCommandEventFunction) &wxManualPaintPanel::onMovedBar); } //--------------------------------------------------------------------------- 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 ) { 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( ); } } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnCopy( wxCommandEvent &event ) { } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnUndo( wxCommandEvent &event ) { this->_manualPaintModel->Undo( ); } //--------------------------------------------------------------------------- void wxManualPaintPanel::OnRedo( wxCommandEvent &event ) { this->_manualPaintModel->Redo( ); } //-------------------------------------------------------------------------------------------------------------------------------- // Min-Max Barrange received events //-------------------------------------------------------------------------------------------------------------------------------- void wxManualPaintPanel::onBarrange( wxCommandEvent& event ) { } void wxManualPaintPanel::onActualChange_Bar( wxCommandEvent& event ) { /*mbbtkSliderMinMax->bbSetOutputOutActual(modBarRange->GetActual()); mbbtkSliderMinMax->bbSignalOutputModification(std::string("OutActual"));*/ } void wxManualPaintPanel::onStartChange_Bar( wxCommandEvent& event ) { SetRangeMin( _mBarSlices->GetStart( ) ); } void wxManualPaintPanel::onEndChange_Bar( wxCommandEvent& event ) { SetRangeMax( _mBarSlices->GetEnd( ) ); } void wxManualPaintPanel::onSelectionEnd( wxCommandEvent& event ) { } void wxManualPaintPanel::onMovedBar( wxCommandEvent& event ) { } //------------------------------------------------------------------------- //-------------------------------------------------------------------------- //--------------------------------------------------------------------------