-/*=========================================================================
-
+/*=========================================================================
Program: bbtk
Module: $RCSfile: bbwxSlider.cxx,v $
Language: C++
- Date: $Date: 2008/01/22 15:41:35 $
- Version: $Revision: 1.2 $
-
- 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: 2008/12/11 15:30:14 $
+ Version: $Revision: 1.16 $
=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* 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
*
*/
-
#ifdef _USE_WXWIDGETS_
-
-
#include "bbwxSlider.h"
#include "bbwxPackage.h"
-
-
-
+#include "bbtkUtilities.h"
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,
+ int 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;
+ int 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)
+ int reactiveontrack)
:
wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
mBox(box),
reactiveOnTrack(reactiveontrack)
{
wxPanel * panel = this;
-
+
label_min = NULL;
label_max = NULL;
label_vertical = NULL;
mResolutionOfSlider = NULL;
-
+
int sizeX,sizeY;
long wxlabels=0;
long wxorientation=0;
(void (wxPanel::*)(wxScrollEvent&))
&SliderWidget::OnSliderTrack );
+ Connect( mwxSlider->GetId(),
+ wxEVT_SCROLL_CHANGED,
+ (wxObjectEventFunction)
+ (void (wxPanel::*)(wxScrollEvent&))
+ &SliderWidget::OnSliderTrack );
+
// If asked : creation of the other little slider which allows to change
// the resolution of the main slider
if (changeresolution==true){
RefreshLabels();
// Insert the sizer in the main panel and refresh the layout
panel->SetSizer(sizer);
- // panel->SetAutoLayout(true);
- // panel->Layout();
}
//-------------------------------------------------------------------------
{
// When user releases the slider
// we update the output of the box
+
mBox->bbSetOutputOut( mwxSlider->GetValue() );
mBox->bbSetInputIn( mwxSlider->GetValue() );
// and signal that the output has changed
mBox->bbSignalOutputModification("Out");
}
- RefreshLabels();
+ RefreshLabels();
}
//-------------------------------------------------------------------------
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
- BBTK_USER_BLACK_BOX_IMPLEMENTATION(Slider,bbtk::WxBlackBox);
+ BBTK_BLACK_BOX_IMPLEMENTATION(Slider,bbtk::WxBlackBox);
BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,Slider);
- //--------------------------------------------------------------------------
-
+
//--------------------------------------------------------------------------
void Slider::bbUserConstructor()
{
bbSetInputMin(0);
bbSetInputMax(500);
bbSetOutputOut(0);
- bbSetInputOrientation(0);
+ bbSetInputOrientation("HORIZONTAL");
bbSetInputChangeResolution(false);
bbSetInputLabel(true);
bbSetInputReactiveOnTrack(0);
}
- //--------------------------------------------------------------------------
-
+
//--------------------------------------------------------------------------
void Slider::Process()
{
bbSetOutputOut( bbGetInputIn() );
}
- void Slider::CreateWidget()
+ void Slider::CreateWidget(wxWindow* parent)
{
- bbSetOutputWidget( new SliderWidget(this,
- bbGetWxParent(),
- bbGetInputOrientation() ,
+
+ int orientation=0;
+ if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"0|H|HORIZONTAL")==true) { orientation=0; }
+ if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"1|V|VERTICAL")==true) { orientation=1; }
+
+
+ // std::cout << "bbGetWxParent = "<<bbGetWxParent()<<std::endl;
+ SliderWidget *w = new SliderWidget(this,
+ parent, //bbGetWxParent(),
+ orientation ,
bbGetInputChangeResolution(),
bbGetInputLabel(),
bbtk::std2wx( bbGetInputTitle() ),
bbGetInputMax(),
bbGetInputIn(),
bbGetInputReactiveOnTrack()
- )
- );
+ );
+ // std::cout << "w = "<<w<<std::endl;
+ // w->SetName( bbtk::std2wx( bbGetInputWinTitle() ) );
+
+ bbSetOutputWidget( w );
}
- //--------------------------------------------------------------------------
- /*
- //--------------------------------------------------------------------------
- bbtk::WxBlackBoxWidget* Slider::bbUserCreateWidget(wxWindow *parent)
- {
-
-
- }
- //--------------------------------------------------------------------------
- */
-
} //namespace bbwx