5216aaebc6f412f45aa3b0f89a46b9f43a5c6fd2
[u/mrichter/AliRoot.git] / EVE / Reve / RGValuators.h
1 // $Header$
2
3 #ifndef REVE_RGValuators_H
4 #define REVE_RGValuators_H
5
6 #include <TGNumberEntry.h>
7
8 class TGLabel;
9 class TGHSlider;
10 class TGDoubleHSlider;
11
12
13 namespace Reve {
14
15 class RGValuatorBase: public TGCompositeFrame
16 {
17 protected:
18   UInt_t      fLabelWidth;
19   Bool_t      fAlignRight;
20   Bool_t      fShowSlider;
21
22   Int_t       fNELength;
23   Int_t       fNEHeight;
24
25   TGLabel*    fLabel;
26
27 public:
28   RGValuatorBase(const TGWindow *p, const char* title, UInt_t w, UInt_t h);
29   virtual ~RGValuatorBase() {}
30
31   virtual void Build() = 0;
32
33   void SetLabelWidth(Int_t w)        { fLabelWidth = w; }
34   void SetAlignRight(Bool_t a)       { fAlignRight = a; }
35   void SetShowSlider(Bool_t s=kTRUE) { fShowSlider = s; }
36
37   void SetNELength(Int_t l)          { fNELength = l; }
38   void SetNEGeight(Int_t h)          { fNEHeight = h; }
39
40   ClassDef(RGValuatorBase, 0);
41 }; // endclass RGValuatorBase
42
43 /**************************************************************************/
44
45 class RGValuator: public RGValuatorBase
46 {
47 protected:
48   Float_t        fValue;
49   Float_t        fMin;
50   Float_t        fMax;
51
52   Bool_t         fSliderNewLine;
53   Int_t          fSliderSteps;
54   TGNumberEntry* fEntry;
55   TGHSlider*     fSlider;
56   
57 public:
58   RGValuator(const TGWindow *p, const char* title, UInt_t w, UInt_t h);
59   virtual ~RGValuator() {}
60
61   virtual void Build();
62   
63   Float_t GetValue() const { return fValue; }
64   virtual void SetValue(Float_t v, Bool_t emit=kFALSE);
65
66   void SliderCallback();
67   void EntryCallback();
68   void ValueSet(Double_t); //*SIGNAL* 
69
70   TGHSlider*     GetSlider() { return fSlider; }
71   TGNumberEntry* GetEntry()  { return fEntry; }
72
73   void SetSliderNewLine(Bool_t nl) { fSliderNewLine = nl; }
74
75   void SetLimits(Int_t min, Int_t max);
76   void SetLimits(Float_t min, Float_t max, Int_t nsteps,
77                  TGNumberFormat::EStyle nef=TGNumberFormat::kNESRealTwo);
78
79   void SetToolTip(const Text_t* tip);
80
81   ClassDef(RGValuator, 0);
82 }; // endclass RGValuator
83
84 /**************************************************************************/
85
86 class RGDoubleValuator: public RGValuatorBase
87 {
88 protected:
89   TGNumberEntry*    fMinEntry;
90   TGNumberEntry*    fMaxEntry;
91   TGDoubleHSlider*  fSlider;
92   
93 public:
94   RGDoubleValuator(const TGWindow *p, const char* title, UInt_t w, UInt_t h);
95   virtual ~RGDoubleValuator() {}
96
97   virtual void Build();
98  
99   void MinEntryCallback();
100   void MaxEntryCallback();
101   void SliderCallback();
102   void ValueSet(); //*SIGNAL* 
103
104   TGDoubleHSlider* GetSlider()   { return fSlider; }
105   TGNumberEntry*   GetMinEntry() { return fMinEntry; }
106   TGNumberEntry*   GetMaxEntry() { return fMaxEntry; }
107
108   void SetLimits(Float_t min, Float_t max, TGNumberFormat::EStyle nef=TGNumberFormat::kNESRealTwo);
109   void SetValues(Float_t min, Float_t max, Bool_t emit=kFALSE);
110
111   void GetValues(Float_t& min, Float_t& max) const
112   { min = fMinEntry->GetNumber(); max = fMaxEntry->GetNumber(); }
113   Float_t GetMin() const { return fMinEntry->GetNumber(); }
114   Float_t GetMax() const { return fMaxEntry->GetNumber(); }
115
116   ClassDef(RGDoubleValuator, 0);
117 }; // endclass RGDoubleValuator
118
119 }
120
121 #endif