]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualPaint/wxManualPaintPanel.cpp
#3358 creaMaracasVisu Feature New Normal - Box::ColorLayerImageView Change informat...
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualPaint / wxManualPaintPanel.cpp
index 58054eaf30b9a3776e0d865dc05d8508c5bcb669..9276f5975e0f4133c1677a5400ca07bc8c417220 100644 (file)
@@ -1,3 +1,28 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 #include "wxManualPaintPanel.h"
 #include <wx/radiobox.h>
 
@@ -5,15 +30,13 @@ wxManualPaintPanel::wxManualPaintPanel( wxWindow * parent )
                : wxPanel( parent, -1 )
 {
        wxSizer *sizer = new wxFlexGridSizer( 1 );
-
        // Widget interface
-       wxStaticText *tittleText = new wxStaticText( this, -1,
-               _T("             Manual Paint") );
+       wxStaticText *tittleText = new wxStaticText( this, -1,_T("             Manual Paint") );
        //Title
        sizer->Add( tittleText );
        //giving some blank spaces
-       sizer->Add( new wxStaticText( this, -1, _T("             ") ) );
-
+       sizer->Add( new wxStaticText( this, -1, _T("          key A : Enable/Disable   ") ) );
+       this->ConfigureActiveCBButton( );
        this->ConfigureBrushToolRadioButton( );
        this->Configure2D3DRadioButton( );
        this->ConfigureBrushFormRadioButton( );
@@ -23,32 +46,33 @@ wxManualPaintPanel::wxManualPaintPanel( wxWindow * parent )
        this->ConfigureDistanceFillSld( );
        this->ConfigureTolFillSld( );
        this->ConfigureEditButtons( );
-
        //Buttons
-       wxStaticText *editButtonsText = new wxStaticText( this, -1,
-               _T("Edit Buttons") );
-       sizer->Add( editButtonsText );
-       this->_buttonsSizer = new wxFlexGridSizer( 4 );
+       wxStaticText *editButtonsText   = new wxStaticText( this, -1,_T("Edit Buttons") );
+       this->_buttonsSizer                     = new wxFlexGridSizer( 4 );
        this->_buttonsSizer->Add( _btnUndo, 1, wxGROW );
        this->_buttonsSizer->Add( _btnRedo, 1, wxGROW );
        this->_buttonsSizer->Add( _btnCopy, 1, wxGROW );
-
        this->_gConfigSizer = new wxFlexGridSizer( 1 );
        //BrushTool Radio Button
        //giving blank space
-       this->_gConfigSizer->Add(
-               new wxStaticText( this, -1, _T("             ") ) );
+       this->_gConfigSizer->Add(  new wxStaticText( this, -1, _T("             ") ) );
        //end of blank space
        this->_gConfigSizer->Add( _rbBrushTool, 1, wxGROW );
        //2D/3D Radio Button
        this->_gConfigSizer->Add( _rb2D3D, 1, wxGROW );
        //RangeBar
-       this->_gConfigSizer->Add(
-               new wxStaticText( this, -1, _T( "Select Range" ) ), 1, wxGROW );
+       this->_gConfigSizer->Add( new wxStaticText( this, -1, _T( "Select Range" ) ), 1, wxGROW );
        this->_gConfigSizer->Add( _mBarSlices, 1, wxGROW );
        //GrayLevel Slider
        this->_gConfigSizer->Add( _txtGrayLevel );
+
+//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
+#if wxMAJOR_VERSION <= 2
        wxFlexGridSizer *sizerGrayLevel = new wxFlexGridSizer( 2, wxHORIZONTAL );
+#else
+       wxFlexGridSizer *sizerGrayLevel = new wxFlexGridSizer( 2 );
+#endif
+
        sizerGrayLevel->Add( _sldGrayLevel, 1, wxGROW );
        sizerGrayLevel->Add( _graylevelCtrl, 1,
                wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
@@ -59,11 +83,17 @@ wxManualPaintPanel::wxManualPaintPanel( wxWindow * parent )
        //giving blank space
        this->_brushSizer->Add( new wxStaticText( this, -1, _T("             ") ) );
        //end of blank space
-       this->_brushSizer->Add(
-               new wxStaticText( this, -1, _T("Brush Settings") ) );
+       this->_brushSizer->Add( new wxStaticText( this, -1, _T("Brush Settings") ) );
        //BrushSize Slider
        this->_brushSizer->Add( _txtBrushSize );
+
+//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
+#if wxMAJOR_VERSION <= 2
        wxFlexGridSizer *sizersdlBrushSize = new wxFlexGridSizer( 2, wxHORIZONTAL );
+#else
+       wxFlexGridSizer *sizersdlBrushSize = new wxFlexGridSizer( 2 );
+#endif
+
        sizersdlBrushSize->Add( _sldBrushSize, 1, wxGROW );
        sizersdlBrushSize->Add( _BrushSizeCtrl, 1,
                wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
@@ -80,29 +110,25 @@ wxManualPaintPanel::wxManualPaintPanel( wxWindow * parent )
        this->_FillSizer->Add( _txtToleranceFill );
        wxFlexGridSizer *sizerTolerance = new wxFlexGridSizer( 2 );
        sizerTolerance->Add( _sldToleranceFill, 1, wxGROW );
-       sizerTolerance->Add( _tolerancefillCtrl, 1,
-               wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
+       sizerTolerance->Add( _tolerancefillCtrl, 1, wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
        this->_FillSizer->Add( sizerTolerance, 1, wxGROW );
        //Distance Fill
        this->_FillSizer->Add( _txtDistanceFill );
        wxFlexGridSizer *sizerDistance = new wxFlexGridSizer( 2 );
        sizerDistance->Add( _sldDistanceFill, 1, wxGROW );
-       sizerDistance->Add( _distancefillCtrl, 1,
-               wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
+       sizerDistance->Add( _distancefillCtrl, 1, wxALIGN_BOTTOM | wxALIGN_LEFT | wxALL, 5 );
        this->_FillSizer->Add( sizerDistance );
-
+       sizer->Add( _activeCB );
+       sizer->Add( editButtonsText );
        sizer->Add( _buttonsSizer );
        sizer->Add( _gConfigSizer );
        sizer->Add( _brushSizer );
        sizer->Add( _FillSizer );
-
        this->ConnectComponents( ); //DFCH
        this->_FillSizer->Show( false );
-
        this->SetSizer( sizer );
        this->SetAutoLayout( true );
        this->Layout( );
-
 }
 
 //---------------------------------------------------------------------------
@@ -111,8 +137,16 @@ wxManualPaintPanel::~wxManualPaintPanel( )
 }
 
 //--------------------------------------------------------------------------
+void wxManualPaintPanel::ConfigureActiveCBButton( )
+{
+   _activeCB = new wxCheckBox (this, -1, _T("Active") );
+   _activeCB->SetValue(true);
+   SetActive( _activeCB->GetValue() );
+}
+
 
 //Panel Config
+//--------------------------------------------------------------------------
 void wxManualPaintPanel::ConfigureBrushToolRadioButton( )
 {
        wxString lstBrushForm[ 2 ];
@@ -122,6 +156,7 @@ void wxManualPaintPanel::ConfigureBrushToolRadioButton( )
                wxDefaultPosition, wxSize( 270, 45 ), 2, lstBrushForm, 2,
                wxRA_SPECIFY_COLS );
 }
+
 //--------------------------------------------------------------------------
 void wxManualPaintPanel::Configure2D3DRadioButton( )
 {
@@ -166,63 +201,66 @@ void wxManualPaintPanel::ConfigureRangeBar( )
        _mBarSlices->SetStart( min );
        _mBarSlices->SetEnd( max );
        _mBarSlices->Update( );
+       SetRangeMin( min );
+       SetRangeMax( max );
        //DFCH -- End BarSlices
 }
+
 //--------------------------------------------------------------------------
 void wxManualPaintPanel::ConfigureGrayLevelSld( )
 {
        _txtGrayLevel = new wxStaticText( this, -1,
-               wxString( _T("  Gray Level  ") ) );
+       wxString( _T("  Gray Level  ") ) );
        _sldGrayLevel = new wxSlider( this, -1, 0, 0, 255, wxDefaultPosition,
-               wxDefaultSize, wxSL_LABELS );
+       wxDefaultSize, wxSL_LABELS );
        _sldGrayLevel->SetMinSize( wxSize( 200, -1 ) );
        _sldGrayLevel->SetMaxSize( wxSize( 200, -1 ) );
        _graylevelCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
-               wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65535, 0 );
+       wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65535, 0 );
 }
+
 //--------------------------------------------------------------------------
 void wxManualPaintPanel::ConfigureBrushSizeSld( )
 {
        _txtBrushSize = new wxStaticText( this, -1,
-               wxString( _T("  Brush size  ") ) );
-       _sldBrushSize = new wxSlider( this, -1, 1, 1, 50, wxDefaultPosition,
-               wxDefaultSize, wxSL_LABELS );
+       wxString( _T("  Brush size  ") ) );
+       _sldBrushSize = new wxSlider( this, -1, 5, 1, 50, wxDefaultPosition,
+       wxDefaultSize, wxSL_LABELS );
        _BrushSizeCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
-               wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65535, 0 );
+       wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65535, 0 );
        _sldBrushSize->SetMinSize( wxSize( 200, -1 ) );
        _sldBrushSize->SetMaxSize( wxSize( 200, -1 ) );
 }
+
 //--------------------------------------------------------------------------
 void wxManualPaintPanel::ConfigureDistanceFillSld( )
 {
        _txtDistanceFill = new wxStaticText( this, -1,
-               wxString( _T("  Distance fill  ") ) );
-       _sldDistanceFill = new wxSlider( this, -1, 50, 1, 500, wxDefaultPosition,
-               wxDefaultSize, wxSL_LABELS );
+       wxString( _T("  Distance fill  ") ) );
+       _sldDistanceFill = new wxSlider( this, -1, 5, 1, 500, wxDefaultPosition,
+       wxDefaultSize, wxSL_LABELS );
        _sldDistanceFill->SetMinSize( wxSize( 200, -1 ) );
        _sldDistanceFill->SetMaxSize( wxSize( 200, -1 ) );
        _distancefillCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
-               wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 500, 50 );
+       wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 500, 50 );
        _txtDistanceFill->Disable( );
        _sldDistanceFill->Disable( );
        _distancefillCtrl->Disable( );
 }
+
 //--------------------------------------------------------------------------
 void wxManualPaintPanel::ConfigureTolFillSld( )
 {
-       _txtToleranceFill = new wxStaticText( this, -1,
-               wxString( _T("  Tolerance fill  ") ) );
-       _sldToleranceFill = new wxSlider( this, -1, 125, 0, 255, wxDefaultPosition,
-               wxDefaultSize, wxSL_LABELS );
+       _txtToleranceFill = new wxStaticText( this, -1,wxString( _T("  Tolerance fill  ") ) );
+       _sldToleranceFill = new wxSlider( this, -1, 125, 0, 255, wxDefaultPosition,wxDefaultSize, wxSL_LABELS );
        _sldToleranceFill->SetMinSize( wxSize( 200, -1 ) );
        _sldToleranceFill->SetMaxSize( wxSize( 200, -1 ) );
-       _tolerancefillCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,
-               wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65535, 50 );
+       _tolerancefillCtrl = new wxSpinCtrl( this, wxID_ANY, wxEmptyString,wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 65535, 50 );
        _txtToleranceFill->Disable( );
        _sldToleranceFill->Disable( );
        _tolerancefillCtrl->Disable( );
-
 }
+
 //--------------------------------------------------------------------------
 void wxManualPaintPanel::ConfigureEditButtons( )
 {
@@ -239,17 +277,14 @@ void wxManualPaintPanel::ConfigureEditButtons( )
  */
 void wxManualPaintPanel::ConnectComponents( ) //DFCH
 {
-       this->Connect(
-               _sldBrushSize->GetId( ),
+       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(),
+               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);
@@ -290,7 +325,7 @@ void wxManualPaintPanel::ConnectComponents( ) //DFCH
                                _rbBrushTool->GetId(),
                                wxEVT_COMMAND_RADIOBOX_SELECTED,
                                (wxObjectEventFunction) (void(wxPanel::*)(
-                                                               wxCommandEvent&)) &wxManualPaintPanel::OnBrushTool);this->Connect
+                                                               wxCommandEvent&)) &wxManualPaintPanel::OnTool);this->Connect
                (
                                _btnCopy->GetId(),
                                wxEVT_COMMAND_BUTTON_CLICKED,
@@ -338,9 +373,21 @@ void wxManualPaintPanel::ConnectComponents( ) //DFCH
                                wxEVT_COMMAND_TEXT_UPDATED,
                                (wxObjectEventFunction) (void(wxPanel::*)(
                                                                wxCommandEvent&)) &wxManualPaintPanel::OnCtrBrushSize);
-
+               this->Connect
+               (
+                       _activeCB->GetId(),
+                       wxEVT_COMMAND_CHECKBOX_CLICKED, 
+                       (wxObjectEventFunction) (void (wxPanel::*)(wxCommandEvent&))&wxManualPaintPanel::OnActive);
        }
 
+
+  //-------------------------------------------------------------------------
+  void wxManualPaintPanel::OnActive(wxCommandEvent& event)
+  {
+       SetActive( _activeCB->GetValue() );
+  }
+
+
 //---------------------------------------------------------------------------
 void wxManualPaintPanel::OnBrushSize( wxScrollEvent& event )
 {
@@ -354,7 +401,6 @@ void wxManualPaintPanel::OnBrushSize( wxScrollEvent& event )
 void wxManualPaintPanel::OnSldGrayLevel( wxScrollEvent& event )
 {
        SetGrayLevel( (double) ( _sldGrayLevel->GetValue( )) );
-
        wxString text;
        text.Printf( wxT("%d"), _sldGrayLevel->GetValue( ) );
        _graylevelCtrl->SetValue( text );
@@ -372,7 +418,6 @@ 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 );
@@ -397,7 +442,6 @@ void wxManualPaintPanel::OnCtrBrushSize( wxCommandEvent &event )
 void wxManualPaintPanel::OnSldToleranceFill( wxScrollEvent& event )
 {
        SetToleranceFill( (double) ( _sldToleranceFill->GetValue( )) );
-
        wxString text;
        text.Printf( wxT("%d"), _sldToleranceFill->GetValue( ) );
        _tolerancefillCtrl->SetValue( text );
@@ -440,7 +484,7 @@ void wxManualPaintPanel::OnBrushForm( wxCommandEvent &event )
 }
 
 //---------------------------------------------------------------------------
-void wxManualPaintPanel::OnBrushTool( wxCommandEvent &event )
+void wxManualPaintPanel::OnTool( wxCommandEvent &event )
 {
        DisableControls( );
        SetTool( _rbBrushTool->GetSelection( ) );
@@ -460,7 +504,6 @@ void wxManualPaintPanel::OnBrushTool( wxCommandEvent &event )
                _txtToleranceFill->Enable( );
                _sldToleranceFill->Enable( );
                _tolerancefillCtrl->Enable( );
-
                _txtDistanceFill->Enable( );
                _sldDistanceFill->Enable( );
                _distancefillCtrl->Enable( );
@@ -478,13 +521,13 @@ void wxManualPaintPanel::OnCopy( wxCommandEvent &event )
 //---------------------------------------------------------------------------
 void wxManualPaintPanel::OnUndo( wxCommandEvent &event )
 {
-       this->_manualPaintModel->Undo( );
+       this->_manualPaintControler->Undo( );
 }
 
 //---------------------------------------------------------------------------
 void wxManualPaintPanel::OnRedo( wxCommandEvent &event )
 {
-       this->_manualPaintModel->Redo( );
+       this->_manualPaintControler->Redo( );
 }
 
 //--------------------------------------------------------------------------------------------------------------------------------
@@ -493,11 +536,13 @@ void wxManualPaintPanel::OnRedo( wxCommandEvent &event )
 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( ) );