]> Creatis software - bbtk.git/blob - packages/wx/src/bbwxSlider.h
Recreated the complete cvs tree because the project architecture deeply changed
[bbtk.git] / packages / wx / src / bbwxSlider.h
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbwxSlider.h,v $
5   Language:  C++
6   Date:      $Date: 2008/01/22 15:02:00 $
7   Version:   $Revision: 1.1.1.1 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*//**
18 /**
19  * \file 
20  * \brief Short description in one line
21  * 
22  * Long description which 
23  * can span multiple lines
24 */
25
26 /**
27  * \class bbwx::Slider
28  * \brief 
29
30  * \class bbwx::SliderWidget
31  * \brief 
32  */
33
34
35 #ifdef _USE_WXWIDGETS_
36
37
38 // Prevents multiple inclusions : use symbols of the form
39 // __FILENAME_INCLUDED__ 
40 // where FILENAME must be replaced by the actual file name
41 #ifndef __bbwxSlider_h_INCLUDED__
42 #define __bbwxSlider_h_INCLUDED__
43
44 // Include wxBlackBox definition
45 #include "bbtkWxBlackBox.h"
46
47
48
49 // Namespace of the package "wx" is "bbwx" 
50 // Namespace associated to packages should be of the form :
51 // bbPACKAGENAME
52 namespace bbwx
53 {
54   
55   
56   
57
58
59
60   //--------------------------------------------------------------------------
61   // Forward declaration of the box
62   class Slider;
63   //--------------------------------------------------------------------------
64
65
66
67   
68   //--------------------------------------------------------------------------
69   // The widget created by the box 
70   // Its name should be : BOXNAMEWidget
71   // It should inherit WxBlackBoxWidget or a descendant such as WxBlackBoxWidgetPanel
72   class SliderWidget : public wxPanel //public bbtk::WxBlackBoxWidgetPanel
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_USER_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,int);
134     BBTK_DECLARE_INPUT(ChangeResolution,bool);
135     BBTK_DECLARE_INPUT(ReactiveOnTrack,int);    
136     BBTK_DECLARE_OUTPUT(Out,int);
137     BBTK_PROCESS(Process);
138     void Process();
139
140   protected:
141     virtual void bbUserConstructor();
142     
143     //  private:
144     //  virtual bbtk::WxBlackBoxWidget* bbUserCreateWidget(wxWindow *parent);
145   };
146   //=================================================================
147  
148   //=================================================================
149   // the black box description
150   BBTK_BEGIN_DESCRIBE_BLACK_BOX(Slider,bbtk::WxBlackBox);
151   BBTK_NAME("Slider");
152   BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr");
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 '') ",
159              std::string);
160   BBTK_INPUT(Slider,Orientation,
161              "Orientation : 0=Horizontal / 1=Vertical (default 0)",int);
162   BBTK_INPUT(Slider,ChangeResolution,
163              "Can the user change the resolution of the slider ? (default FALSE) ",bool);
164   BBTK_INPUT(Slider,ReactiveOnTrack,
165              "Slider sends info when track moves (default 0 = no)",int);  
166   BBTK_OUTPUT(Slider,Out,"Current position of the slider",int);
167   BBTK_END_DESCRIBE_BLACK_BOX(Slider);
168   //=================================================================
169   
170
171
172 } //namespace bbwx
173
174 #endif  //__bbtkwxSlider_h_INCLUDED__
175
176 #endif //_USE_WXWIDGETS_