]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / wxManualPaintPanel.cpp
index babf7276dfef429f63c92c171ab0ae140b19196b..3170c69e8f8087ddbc4590e844a0e197ed899d4b 100644 (file)
@@ -6,66 +6,105 @@ 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"));
+       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);
+                     _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, 50, 1, 50, wxDefaultPosition, wxDefaultSize, wxSL_LABELS);
+                     _distancefillCtrl  = new wxTextCtrl(panel , -1,_T("50") );
+
 
        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);
-    _rb2D3D->Disable();
 
        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("Pensil");
+       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);
-    _rbBrushTool->Disable();
 
        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) &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) &wxManualPaintPanel::OnBrushSize);
+
+    Connect(_sldGrayLevel->GetId()      , wxEVT_SCROLL_THUMBRELEASE            , (wxObjectEventFunction) &wxManualPaintPanel::OnSldGrayLevel);
+    Connect(_graylevelCtrl->GetId()     , wxEVT_COMMAND_TEXT_UPDATED       , (wxObjectEventFunction) &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) &wxManualPaintPanel::OnSldToleranceFill);
+    Connect(_tolerancefillCtrl->GetId() , wxEVT_COMMAND_TEXT_UPDATED       , (wxObjectEventFunction) &wxManualPaintPanel::OnCtrTxtToleranceFill);
+
+    Connect(_sldDistanceFill->GetId()   , wxEVT_SCROLL_THUMBRELEASE            , (wxObjectEventFunction) &wxManualPaintPanel::OnSldDistanceFill);
+    Connect(_distancefillCtrl->GetId()  , wxEVT_COMMAND_TEXT_UPDATED       , (wxObjectEventFunction) &wxManualPaintPanel::OnCtrTxtDistanceFill);
+
+    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);
 
        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(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(_rbBrushTool, 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(_rbBrushTool, 1, wxGROW );
+    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("  ")));
@@ -109,7 +148,64 @@ void wxManualPaintPanel::OnCtrTxtGrayLevel(wxCommandEvent &event)
     }
 }
 
+//---------------------------------------------------------------------------
+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()
+{
+    _sldBrushSize->Disable();
+    _rbBrushForm->Disable();
+
+    _txtToleranceFill->Disable();
+    _sldToleranceFill->Disable();
+    _tolerancefillCtrl->Disable();
 
+    _txtDistanceFill->Disable();
+    _sldDistanceFill->Disable();
+    _distancefillCtrl->Disable();
+}
 
 //---------------------------------------------------------------------------
 void wxManualPaintPanel::On2D3D(wxCommandEvent &event)
@@ -127,7 +223,25 @@ void wxManualPaintPanel::OnBrushForm(wxCommandEvent &event)
 //---------------------------------------------------------------------------
 void wxManualPaintPanel::OnBrushTool(wxCommandEvent &event)
 {
+    DisableControls();
     SetBrushTool( _rbBrushTool->GetSelection() );
+
+    if (_rbBrushTool->GetSelection()==0)  //Brush tool
+    {
+        _sldBrushSize->Enable();
+        _rbBrushForm->Enable();
+    }
+
+    if (_rbBrushTool->GetSelection()==1)  //Fill tool
+    {
+        _txtToleranceFill->Enable();
+        _sldToleranceFill->Enable();
+        _tolerancefillCtrl->Enable();
+
+        _txtDistanceFill->Enable();
+        _sldDistanceFill->Enable();
+        _distancefillCtrl->Enable();
+    }
 }
 
 //---------------------------------------------------------------------------