-/*=========================================================================
-
+/*=========================================================================
Program: bbtk
Module: $RCSfile: bbwxSlider.cxx,v $
Language: C++
- Date: $Date: 2008/10/06 09:05:07 $
- Version: $Revision: 1.13 $
-
- Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
- l'Image). All rights reserved. See Doc/License.txt or
- http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
-
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notices for more information.
-
+ Date: $Date: 2009/03/19 08:08:14 $
+ Version: $Revision: 1.20 $
=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
+* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
+*
+* 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.
+* ------------------------------------------------------------------------ */
+
/**
* \file
* \brief Short description in one line
namespace bbwx
{
+ //--------------------------------------------------------------------------
+ // The widget created by the box
+ class SliderWidget : public wxPanel
+ {
+ public:
+ /// Ctor with the two first params the parent window and the creator box
+ /// which must be passed to the WxBlackBoxWidget constructor.
+ /// The other params initialize the widget
+ SliderWidget(Slider* box, wxWindow *parent,
+ int orientation,
+ bool changeresolution,
+ bool label,
+ wxString title,
+ int vmin,
+ int vmax,
+ int value,
+ bool track);
+ /// Dtor
+ ~SliderWidget();
+ /// Events callbacks
+ /// Called when the slider is moved
+ void OnSliderTrack(wxScrollEvent& event);
+ /// Called when the slider is released
+ void OnSliderRelease(wxScrollEvent& event);
+ /// Called when the little slider which controls the resolution
+ /// of the main slider is moved (if activated)
+ void OnResolutionOfSlider(wxScrollEvent& event);
+
+ // Accessors
+ int GetValue() { return mwxSlider->GetValue(); }
+ void SetRange(int min, int max);
+ // Update the texts which display the min/max/current values of the slider
+ void RefreshLabels();
+
+ private:
+ Slider* mBox;
+ wxSlider *mwxSlider;
+ wxSlider *mResolutionOfSlider;
+ int min;
+ int max;
+ bool reactiveOnTrack;
+ wxStaticText *label_vertical;
+ wxStaticText *label_min;
+ wxStaticText *label_max;
+ };
+ //------------------------------------------------------------------------
+ //------------------------------------------------------------------------
+ //------------------------------------------------------------------------
+
+
//-------------------------------------------------------------------------
SliderWidget::SliderWidget(Slider* box, wxWindow *parent,
int orientation,
int vmin,
int vmax,
int value,
- int reactiveontrack)
+ bool reactiveontrack)
:
wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
mBox(box),
long wxorientation=0;
if (orientation==0)
{
- sizeX = 2;
+ sizeX = 2;
sizeY = 40;
- wxorientation = wxSL_HORIZONTAL;
+ wxorientation = wxSL_HORIZONTAL;
if (labels==true)
{
wxlabels = wxSL_LABELS;
}
else
{
- sizeX = 20;
- sizeY = 2;
+ sizeX = 20;
+ sizeY = 2;
wxorientation = wxSL_VERTICAL;
}
// Connecting events to callbacks
Connect( mwxSlider->GetId(),
wxEVT_SCROLL_THUMBRELEASE,
-
(wxObjectEventFunction)
(void (wxPanel::*)(wxScrollEvent&))
&SliderWidget::OnSliderRelease );
Connect( mwxSlider->GetId(),
wxEVT_SCROLL_THUMBTRACK,
-
(wxObjectEventFunction)
(void (wxPanel::*)(wxScrollEvent&))
&SliderWidget::OnSliderTrack );
Connect( mwxSlider->GetId(),
wxEVT_SCROLL_CHANGED,
-
(wxObjectEventFunction)
(void (wxPanel::*)(wxScrollEvent&))
&SliderWidget::OnSliderTrack );
mBox->bbSetOutputOut( mwxSlider->GetValue() );
mBox->bbSetInputIn( mwxSlider->GetValue() );
// and signal that the output has changed
- mBox->bbSignalOutputModification("Out");
+ mBox->bbSignalOutputModification(std::string("Out"));
}
RefreshLabels();
}
mBox->bbSetOutputOut( mwxSlider->GetValue() );
mBox->bbSetInputIn( mwxSlider->GetValue() );
// and signal that the output has changed
- mBox->bbSignalOutputModification("Out");
+ mBox->bbSignalOutputModification(std::string("Out"));
}
//-------------------------------------------------------------------------
bbSetInputOrientation("HORIZONTAL");
bbSetInputChangeResolution(false);
bbSetInputLabel(true);
- bbSetInputReactiveOnTrack(0);
+ bbSetInputReactiveOnTrack(false);
}
//--------------------------------------------------------------------------
bbSetOutputOut( bbGetInputIn() );
}
- void Slider::CreateWidget()
+ void Slider::CreateWidget(wxWindow* parent)
{
int orientation=0;
// std::cout << "bbGetWxParent = "<<bbGetWxParent()<<std::endl;
SliderWidget *w = new SliderWidget(this,
- bbGetWxParent(),
+ parent, //bbGetWxParent(),
orientation ,
bbGetInputChangeResolution(),
bbGetInputLabel(),