]> Creatis software - bbtk.git/blob - packages/wx/src/bbwxSlider.h
3bd9fed2a70ac7da17bdb66d105a31b1ef7da057
[bbtk.git] / packages / wx / src / bbwxSlider.h
1 /*=========================================================================                                                                               
2   Program:   bbtk
3   Module:    $RCSfile: bbwxSlider.h,v $
4   Language:  C++
5   Date:      $Date: 2008/11/24 15:45:51 $
6   Version:   $Revision: 1.14 $
7 =========================================================================*/
8
9 /* ---------------------------------------------------------------------
10
11 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
12 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
13 *
14 *  This software is governed by the CeCILL-B license under French law and 
15 *  abiding by the rules of distribution of free software. You can  use, 
16 *  modify and/ or redistribute the software under the terms of the CeCILL-B 
17 *  license as circulated by CEA, CNRS and INRIA at the following URL 
18 *  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
19 *  or in the file LICENSE.txt.
20 *
21 *  As a counterpart to the access to the source code and  rights to copy,
22 *  modify and redistribute granted by the license, users are provided only
23 *  with a limited warranty  and the software's author,  the holder of the
24 *  economic rights,  and the successive licensors  have only  limited
25 *  liability. 
26 *
27 *  The fact that you are presently reading this means that you have had
28 *  knowledge of the CeCILL-B license and that you accept its terms.
29 * ------------------------------------------------------------------------ */                                                                         
30
31 /**
32  * \file 
33  * \brief Short description in one line
34  * 
35  * Long description which 
36  * can span multiple lines
37 */
38
39 /**
40  * \class bbwx::Slider
41  * \brief 
42
43  * \class bbwx::SliderWidget
44  * \brief 
45  */
46
47 #ifdef _USE_WXWIDGETS_
48
49 // Prevents multiple inclusions : use symbols of the form
50 // __FILENAME_INCLUDED__ 
51 // where FILENAME must be replaced by the actual file name
52 #ifndef __bbwxSlider_h_INCLUDED__
53 #define __bbwxSlider_h_INCLUDED__
54
55 // Include wxBlackBox definition
56 #include "bbtkWxBlackBox.h"
57
58
59
60 // Namespace of the package "wx" is "bbwx" 
61 // Namespace associated to packages should be of the form :
62 // bbPACKAGENAME
63 namespace bbwx
64 {
65   
66   //--------------------------------------------------------------------------
67   // Forward declaration of the box
68   class Slider;
69   
70   //--------------------------------------------------------------------------
71   // The widget created by the box 
72   class SliderWidget : public wxPanel 
73   {
74   public:
75     /// Ctor with the two first params the parent window and the creator box
76     /// which must be passed to the WxBlackBoxWidget constructor.
77     /// The other params initialize the widget 
78     SliderWidget(Slider* box, wxWindow *parent,
79                  int orientation,
80                  bool changeresolution,
81                  bool label, 
82                  wxString title,
83                  int vmin,
84                  int vmax,
85                  int value,
86        int track);
87     /// Dtor
88     ~SliderWidget();
89     /// Events callbacks
90     /// Called when the slider is moved
91     void OnSliderTrack(wxScrollEvent& event);
92     /// Called when the slider is released
93     void OnSliderRelease(wxScrollEvent& event);
94     /// Called when the little slider which controls the resolution
95     /// of the main slider is moved (if activated)
96     void OnResolutionOfSlider(wxScrollEvent& event);
97
98     // Accessors
99     int  GetValue() { return mwxSlider->GetValue(); }
100     void SetRange(int min, int max);
101     // Update the texts which display the min/max/current values of the slider
102     void RefreshLabels();
103         
104   private:
105     Slider*    mBox;
106     wxSlider   *mwxSlider;
107     wxSlider   *mResolutionOfSlider;
108     int        min;
109     int        max;
110     int        reactiveOnTrack;
111     wxStaticText        *label_vertical;
112     wxStaticText        *label_min;
113     wxStaticText        *label_max;
114   };
115   //------------------------------------------------------------------------
116   //------------------------------------------------------------------------
117   //------------------------------------------------------------------------
118
119   
120   
121   
122   //------------------------------------------------------------------------
123   // The black box
124   class /*BBTK_EXPORT*/ Slider : public bbtk::WxBlackBox
125   {
126     
127     BBTK_BLACK_BOX_INTERFACE(Slider,bbtk::WxBlackBox);
128     BBTK_DECLARE_INPUT(In,int);
129     BBTK_DECLARE_INPUT(Min,int);
130     BBTK_DECLARE_INPUT(Max,int);
131     BBTK_DECLARE_INPUT(Label,bool);
132     BBTK_DECLARE_INPUT(Title,std::string);
133     BBTK_DECLARE_INPUT(Orientation,std::string);
134     BBTK_DECLARE_INPUT(ChangeResolution,bool);
135     BBTK_DECLARE_INPUT(ReactiveOnTrack,int);    
136     BBTK_DECLARE_OUTPUT(Out,int);
137     BBTK_PROCESS(Process);
138     BBTK_CREATE_WIDGET(CreateWidget);
139     void Process();
140     void CreateWidget(wxWindow*);
141
142   protected:
143     virtual void bbUserConstructor();
144   };
145   //=================================================================
146  
147   //=================================================================
148   // the black box description
149   BBTK_BEGIN_DESCRIBE_BLACK_BOX(Slider,bbtk::WxBlackBox);
150   BBTK_NAME("Slider");
151   BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr");
152   // Already inserted for any WxBlackBox  BBTK_CATEGORY("widget");
153   BBTK_DESCRIPTION("Slider widget (wxSlider)");
154   BBTK_INPUT(Slider,In,"Initial position of the slider (default 0)",int,"");
155   BBTK_INPUT(Slider,Min,"Minimum value of the slider (default 0)",int,"");
156   BBTK_INPUT(Slider,Max,"Maximum value of the slider (default 500)",int,"");
157   BBTK_INPUT(Slider,Label,"Show slider labels ? (default FALSE) ",bool,"");
158   BBTK_INPUT(Slider,Title,"Title shown above the slider (default '') ", std::string,"");
159   BBTK_INPUT(Slider,Orientation, "Orientation : (default H)  0=H=HORIZONTAL, 1=V=VERTICAL ",std::string,"");
160   BBTK_INPUT(Slider,ChangeResolution, "Can the user change the resolution of the slider ? (default FALSE) ",bool,"");
161   BBTK_INPUT(Slider,ReactiveOnTrack, "Slider sends info when track moves (default 0 = no)",int,"");  
162   BBTK_OUTPUT(Slider,Out,"Current position of the slider",int,"");
163   BBTK_END_DESCRIBE_BLACK_BOX(Slider);
164   //=================================================================
165   
166
167
168 } //namespace bbwx
169
170 #endif  //__bbtkwxSlider_h_INCLUDED__
171
172 #endif //_USE_WXWIDGETS_