13 #ifndef ROOT_TGNumberEntry
14 #define ROOT_TGNumberEntry
31 class TGNumberFormat {
69 virtual ~TGNumberFormat() { }
70 ClassDef(TGNumberFormat,0)
74 class TGNumberEntryField :
public TGTextEntry,
public TGNumberFormat {
77 Bool_t fNeedsVerification;
86 TGNumberEntryField(
const TGWindow *p, Int_t
id,
87 Double_t val, GContext_t norm,
88 FontStruct_t font = GetDefaultFontStruct(),
89 UInt_t option = kSunkenFrame | kDoubleBorder,
90 Pixel_t back = GetWhitePixel());
91 TGNumberEntryField(
const TGWindow *parent = 0,
92 Int_t
id = -1, Double_t val = 0,
93 EStyle style = kNESReal,
94 EAttribute attr = kNEAAnyNumber,
95 ELimit limits = kNELNoLimits,
96 Double_t min = 0, Double_t max = 1);
98 virtual void SetNumber(Double_t val);
99 virtual void SetIntNumber(Long_t val);
100 virtual void SetTime(Int_t hour, Int_t min, Int_t sec);
101 virtual void SetDate(Int_t year, Int_t month, Int_t day);
102 virtual void SetHexNumber(ULong_t val);
103 virtual void SetText(
const char* text, Bool_t emit = kTRUE);
105 virtual Double_t GetNumber()
const;
106 virtual Long_t GetIntNumber()
const;
107 virtual void GetTime(Int_t& hour, Int_t& min, Int_t& sec)
const;
108 virtual void GetDate(Int_t& year, Int_t& month, Int_t& day)
const;
109 virtual ULong_t GetHexNumber()
const;
111 virtual Int_t GetCharWidth(
const char* text =
"0")
const;
112 virtual void IncreaseNumber(EStepSize step = kNSSSmall,
113 Int_t sign = 1, Bool_t logstep = kFALSE);
114 virtual void SetFormat(EStyle style,
115 EAttribute attr = kNEAAnyNumber);
116 virtual void SetLimits(ELimit limits = kNELNoLimits,
117 Double_t min = 0, Double_t max = 1);
118 virtual void SetState(Bool_t state);
119 virtual void SetLogStep(Bool_t on = kTRUE) {
123 virtual EStyle GetNumStyle()
const {
126 virtual EAttribute GetNumAttr()
const {
129 virtual ELimit GetNumLimits()
const {
132 virtual Double_t GetNumMin()
const {
135 virtual Double_t GetNumMax()
const {
138 virtual Bool_t IsLogStep()
const {
142 virtual Bool_t HandleKey(Event_t* event);
143 virtual Bool_t HandleFocusChange (Event_t* event);
144 virtual void TextChanged(
const char *text = 0);
145 virtual void ReturnPressed();
146 virtual void Layout();
147 virtual Bool_t IsEditable()
const {
return kFALSE; }
148 virtual void InvalidInput(
const char *instr) { Emit(
"InvalidInput(char*)", instr); }
149 virtual void SavePrimitive(std::ostream &out, Option_t * =
"");
151 ClassDef(TGNumberEntryField,0)
156 class TGNumberEntry :
public TGCompositeFrame,
public TGWidget,
157 public TGNumberFormat {
165 const TGPicture *fPicUp;
166 const TGPicture *fPicDown;
168 TGNumberEntry(
const TGNumberEntry&);
169 TGNumberEntry& operator=(
const TGNumberEntry&);
172 TGNumberEntryField *fNumericEntry;
174 TGButton *fButtonDown;
178 TGNumberEntry(
const TGWindow *parent = 0, Double_t val = 0,
179 Int_t digitwidth = 5, Int_t
id = -1,
180 EStyle style = kNESReal,
181 EAttribute attr = kNEAAnyNumber,
182 ELimit limits = kNELNoLimits,
183 Double_t min = 0, Double_t max = 1);
184 virtual ~TGNumberEntry();
186 virtual void SetNumber(Double_t val) {
188 fNumericEntry->SetNumber(val); }
189 virtual void SetIntNumber(Long_t val) {
191 fNumericEntry->SetIntNumber(val); }
192 virtual void SetTime(Int_t hour, Int_t min, Int_t sec) {
194 fNumericEntry->SetTime(hour, min, sec); }
195 virtual void SetDate(Int_t year, Int_t month, Int_t day) {
197 fNumericEntry->SetDate(year, month, day); }
198 virtual void SetHexNumber(ULong_t val) {
200 fNumericEntry->SetHexNumber(val); }
201 virtual void SetText(
const char* text) {
203 fNumericEntry->SetText(text); }
204 virtual void SetState(Bool_t enable = kTRUE);
206 virtual Double_t GetNumber()
const {
208 return fNumericEntry->GetNumber(); }
209 virtual Long_t GetIntNumber()
const {
211 return fNumericEntry->GetIntNumber (); }
212 virtual void GetTime(Int_t& hour, Int_t& min, Int_t& sec)
const {
214 fNumericEntry->GetTime(hour, min, sec); }
215 virtual void GetDate(Int_t& year, Int_t& month, Int_t& day)
const {
217 fNumericEntry->GetDate(year, month, day); }
218 virtual ULong_t GetHexNumber()
const {
220 return fNumericEntry->GetHexNumber(); }
221 virtual void IncreaseNumber(EStepSize step = kNSSSmall,
222 Int_t sign = 1, Bool_t logstep = kFALSE) {
224 fNumericEntry->IncreaseNumber(step, sign, logstep); }
225 virtual void SetFormat(EStyle style, EAttribute attr = TGNumberFormat::kNEAAnyNumber) {
227 fNumericEntry->SetFormat(style, attr); }
228 virtual void SetLimits(ELimit limits = TGNumberFormat::kNELNoLimits,
229 Double_t min = 0, Double_t max = 1) {
231 fNumericEntry->SetLimits(limits, min, max); }
233 virtual EStyle GetNumStyle()
const {
235 return fNumericEntry->GetNumStyle(); }
236 virtual EAttribute GetNumAttr()
const {
238 return fNumericEntry->GetNumAttr(); }
239 virtual ELimit GetNumLimits()
const {
241 return fNumericEntry->GetNumLimits(); }
242 virtual Double_t GetNumMin()
const {
244 return fNumericEntry->GetNumMin(); }
245 virtual Double_t GetNumMax()
const {
247 return fNumericEntry->GetNumMax(); }
248 virtual Bool_t IsLogStep()
const {
250 return fNumericEntry->IsLogStep(); }
251 virtual void SetButtonToNum(Bool_t state);
253 void SetNumStyle(EStyle style) {
254 SetFormat(style, GetNumAttr()); }
255 void SetNumAttr(EAttribute attr = kNEAAnyNumber) {
256 SetFormat(GetNumStyle(), attr); }
257 void SetNumLimits(ELimit limits = kNELNoLimits) {
258 SetLimits(limits, GetNumMin(), GetNumMax()); }
259 void SetLimitValues(Double_t min = 0, Double_t max = 1) {
260 SetLimits(GetNumLimits(), min, max); }
261 virtual void SetLogStep(Bool_t on = kTRUE);
263 virtual void Associate(
const TGWindow *w);
264 virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
265 virtual void ValueChanged(Long_t val);
266 virtual void ValueSet(Long_t val);
268 TGNumberEntryField *GetNumberEntry()
const {
270 return fNumericEntry; }
271 TGButton *GetButtonUp()
const {
274 TGButton *GetButtonDown()
const {
276 return fButtonDown; }
278 virtual Bool_t IsEditable()
const {
return kFALSE; }
280 UInt_t GetDefaultHeight()
const {
return fNumericEntry->GetDefaultHeight(); }
281 virtual void SavePrimitive(std::ostream &out, Option_t * =
"");
282 virtual TGLayoutManager *GetLayoutManager()
const;
284 ClassDef(TGNumberEntry,0)
288 class TGNumberEntryLayout :
public TGLayoutManager {
293 TGNumberEntryLayout(
const TGNumberEntryLayout&);
294 TGNumberEntryLayout& operator=(
const TGNumberEntryLayout&);
297 TGNumberEntryLayout(TGNumberEntry *box): fBox(box) { }
298 virtual void Layout();
299 virtual TGDimension GetDefaultSize()
const;
301 ClassDef(TGNumberEntryLayout,0)