OpendTect  6.3
uigeninput.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: A.H. Bril
8  Date: Oct 2000
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uitoolsmod.h"
14 #include "uigroup.h"
15 #include "datainpspec.h"
16 #include "position.h"
17 #include "uistring.h"
18 
19 class BinIDValue;
20 class uiLineEdit;
21 class uiLabel;
22 class uiCheckBox;
23 class uiString;
24 class uiButton;
25 class uiGenInputInputFld;
26 class uiGenInputFieldIdx;
27 class DataInpSpec;
28 class UserInputObj;
29 
56 mExpClass(uiTools) uiGenInput : public uiGroup
58 public:
59 
60  uiGenInput( uiParent* p, const uiString& disptxt
61  , const char* inputStr=0 );
62 
63  uiGenInput( uiParent* p, const uiString& disptxt
64  , const OD::String& );
65 
66  uiGenInput( uiParent* p, const uiString& disptxt
67  , const uiString& );
68 
69  uiGenInput( uiParent* p, const uiString& disptxt,
70  const DataInpSpec& );
71 
72  uiGenInput( uiParent* p, const uiString&,
73  const DataInpSpec& ,const DataInpSpec& );
74 
75  uiGenInput( uiParent* p, const uiString&,
76  const DataInpSpec&, const DataInpSpec&,
77  const DataInpSpec& );
78 
79  virtual ~uiGenInput();
80 
81  void addInput( const DataInpSpec& );
82 
96  const DataInpSpec* dataInpSpec(int nr=0) const;
97 
103  bool newSpec(const DataInpSpec& nw, int nr);
104 
106  void updateSpecs();
107 
108  bool isUndef( int nr=0 ) const;
109 
110 #undef mDeclArgs
111 #define mDeclArgs(type) int nr=0, type undefval=mUdf(type)
112 
113  const char* text( mDeclArgs(const char*) ) const;
114  const char* text( const char* undefval) const
115  { return text(0,undefval); }
116 
117  int getIntValue( mDeclArgs(int) ) const;
119  bool getBoolValue( mDeclArgs(bool) ) const;
120 
121  double getDValue( mDeclArgs(double) ) const;
122  double getDValue( double undefval ) const
123  { return getDValue(0,undefval) ; }
124 
125  float getFValue( mDeclArgs(float) ) const;
126  float getFValue( float undefval ) const
127  { return getFValue(0,undefval); }
128 
129  inline Interval<int> getIInterval( mDeclArgs(int) ) const
130  { return Interval<int>( getIntValue(nr*2,undefval),
131  getIntValue(nr*2+1,undefval) );}
132 
133  inline Interval<float> getFInterval( mDeclArgs(float) ) const
134  { return Interval<float>( getFValue(nr*2,undefval),
135  getFValue(nr*2+1,undefval) );}
136  inline Interval<float> getFInterval( float undefval ) const
137  { return getFInterval(0,undefval); }
138 
139  inline Interval<double> getDInterval( mDeclArgs(double) ) const
140  { return Interval<double>(getDValue(nr*2,undefval),
141  getDValue(nr*2+1,undefval) );}
142  inline Interval<double> getDInterval( double undefval ) const
143  { return getDInterval(0,undefval); }
144 
146  { return StepInterval<int>(getIntValue(nr*3,undefval),
147  getIntValue(nr*3+1,undefval),
148  getIntValue(nr*3+2,undefval)
149  ); }
151  { return StepInterval<float>(getFValue(nr*3,undefval),
152  getFValue(nr*3+1,undefval),
153  getFValue(nr*3+2,undefval)
154  ); }
155  inline StepInterval<float> getFStepInterval( float undefval ) const
156  { return getFStepInterval(0,undefval); }
157 
159  { return StepInterval<double>(getDValue(nr*3,undefval),
160  getDValue(nr*3+1,undefval),
161  getDValue(nr*3+2,undefval) ); }
162  inline StepInterval<double> getDStepInterval( double undefval ) const
163  { return getDStepInterval(0,undefval); }
164 
165  Coord getCoord( mDeclArgs(double) ) const;
166  BinID getBinID( mDeclArgs(int) ) const;
167  int getTrcNr( mDeclArgs(int) ) const;
168  float getOffset( mDeclArgs(float) ) const;
169 
170 
171 #undef mDeclArgs
172 
173  void setText(const char*,int nr=0);
174  void setValue(int,int nr=0);
175  void setValue(od_int64,int nr=0);
176  void setValue(double,int nr=0);
177  void setValue(float,int nr=0);
178  void setValue(bool,int nr=0);
179 
180  inline void setTexts( const char* v1, const char* v2 )
181  { setText(v1,0); setText(v2,1); }
182  inline void setValues( int v1, int v2 )
183  { setValue(v1,0); setValue(v2,1); }
184  inline void setValues( double v1, double v2 )
185  { setValue(v1,0); setValue(v2,1); }
186  inline void setValues( float v1, float v2 )
187  { setValue(v1,0); setValue(v2,1); }
188  inline void setValues( bool v1, bool v2 )
189  { setValue(v1,0); setValue(v2,1); }
190  inline void setValue( const Coord& c )
191  { setValue(c.x_,0); setValue(c.y_,1); }
192  inline void setValue( const BinID& b )
193  { setValue(b.inl(),0); setValue(b.crl(),1); }
194  inline void setValue(const BinIDValue&);
195  void setValue(const Interval<int>&);
196  void setValue(const Interval<float>&);
197  void setValue(const Interval<double>&);
198 
199  void displayField(bool yn=true,int elemnr=-1,int fldnr=-1);
200  void setReadOnly( bool yn=true,int nr=-1);
201  void setSensitive(bool yn=true,int elemnr=-1,int fldnr=-1);
202  void setEmpty(int nr=-1);
203 
205  UserInputObj* element(int idx);
206  uiObject* rightObj();
207  int nrElements() const;
208  void setElemSzPol( uiObject::SzPolicy p ) { elemszpol_=p;}
209  uiObject::SzPolicy elemSzPol() const { return elemszpol_; }
210  void setToolTip(const uiString&,int ielem=0);
211 
212  virtual const uiString& titleText();
213  virtual void setTitleText(const uiString&);
214 
215  void setChecked(bool yn);
216  bool isChecked() const { return checked_; }
217  bool isCheckable() const { return withchk_ || cbox_; }
218 
219  virtual bool isSingleLine() const { return true; }
220 
221  void setWithCheck( bool yn=true ) { withchk_ = yn; }
222  void setWithSelect( bool yn=true );
223 
224  void setNrDecimals(int nrdec,int fldnr=0);
225  void setRequired(bool yn=true);
226 
231 
232 protected:
233 
236 
238 
240  bool withchk_;
242 
246  uiButton* selbut_;
247 
249  void doSelect_(CallBacker*);
251  virtual void doSelect(CallBacker*) {}
252  void doClear(CallBacker*);
253 
254  void checkBoxSel(CallBacker*);
255 
257  uiGenInputInputFld& createInpFld(const DataInpSpec&);
258  void doFinalise(CallBacker*);
259  inline DataInpSpec* spec( int nr )
260  {
261  return const_cast<DataInpSpec*>
262  ( ((const uiGenInput*)this)->dataInpSpec(nr) );
263  }
264 
265 private:
266 
267  bool checked_;
268 
269  bool rdonly_;
271 
273 
275 
276  DataInpSpec* getInputSpecAndIndex(const int,int&) const;
277  uiGenInputInputFld* getInputFldAndIndex(const int,int&) const;
278 
279 public:
280  mDeprecated double getdValue( int nr=0, double uv=mUdf(double) ) const
281  { return getDValue( nr, uv ); }
282  mDeprecated double getdValue( float undefval ) const
283  { return getDValue(0,undefval); }
284  mDeprecated float getfValue( int nr=0, float udfval=mUdf(float) ) const
285  { return getFValue( nr, udfval ); }
286  mDeprecated float getfValue( float undefval ) const
287  { return getFValue(0,undefval); }
288  /*mDeprecated*/ bool isChecked();
289  /*mDeprecated*/ bool isCheckable() { return withchk_ || cbox_; }
290 };
Definition: uigroup.h:53
virtual const char * text() const =0
#define mExpClass(module)
Definition: commondefs.h:157
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
uiCheckBox * cbox_
Definition: uigeninput.h:245
virtual int getIntValue() const =0
virtual void setToolTip(const uiString &)=0
uiLabel * labl_
Definition: uigeninput.h:243
StepInterval< double > getDStepInterval(double undefval) const
Definition: uigeninput.h:162
void setValues(float v1, float v2)
Definition: uigeninput.h:186
virtual double getDValue() const =0
void setWithCheck(bool yn=true)
Definition: uigeninput.h:221
StepInterval< float > getFStepInterval(int nr=0, float undefval=mUdf(float)) const
Definition: uigeninput.h:150
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
ObjectSet< DataInpSpec > inputs_
Definition: uigeninput.h:272
void setTexts(const char *v1, const char *v2)
Definition: uigeninput.h:180
#define od_int64
Definition: plftypes.h:34
Interval< int > getIInterval(int nr=0, int undefval=mUdf(int)) const
Definition: uigeninput.h:129
uiObject::SzPolicy elemszpol_
Definition: uigeninput.h:274
mDeprecated double getdValue(float undefval) const
Definition: uigeninput.h:282
IdxType & inl()
Definition: posidxpair.h:41
uiString titletext_
Definition: uigeninput.h:244
uiString selText_
Definition: uigeninput.h:239
uiButton * selbut_
Definition: uigeninput.h:246
The base class for most UI elements.
Definition: uiobj.h:35
Definition: uistring.h:88
bool isCheckable() const
Definition: uigeninput.h:217
Definition: uiparent.h:24
bool rdonly_
Definition: uigeninput.h:269
Notifier< uiGenInput > checked
Definition: uigeninput.h:227
void setElemSzPol(uiObject::SzPolicy p)
Definition: uigeninput.h:208
ObjectSet< uiGenInputInputFld > flds_
Definition: uigeninput.h:234
bool withchk_
Definition: uigeninput.h:240
const char * text(const char *undefval) const
Definition: uigeninput.h:114
SzPolicy
How should the object&#39;s size behave? Undef : use default. Small : 1 base sz. Medium : 2* base sz + 1...
Definition: uiobj.h:55
mDeprecated float getfValue(float undefval) const
Definition: uigeninput.h:286
Notifier< uiGenInput > valuechanging
Definition: uigeninput.h:228
Notifier< uiGenInput > valuechanged
Definition: uigeninput.h:229
Specification of input characteristics.
Definition: datainpspec.h:88
Interval< double > getDInterval(double undefval) const
Definition: uigeninput.h:142
void setValues(int v1, int v2)
Definition: uigeninput.h:182
bool rdonlyset_
Definition: uigeninput.h:270
virtual void setReadOnly(bool=true)=0
virtual bool getBoolValue() const =0
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:29
StepInterval< double > getDStepInterval(int nr=0, double undefval=mUdf(double)) const
Definition: uigeninput.h:158
StepInterval< float > getFStepInterval(float undefval) const
Definition: uigeninput.h:155
General Input Element.
Definition: uigeninput.h:56
BinID and a value.
Definition: binidvalue.h:29
#define mDeclArgs(type)
Definition: uigeninput.h:111
Interval< double > getDInterval(int nr=0, double undefval=mUdf(double)) const
Definition: uigeninput.h:139
void setValues(double v1, double v2)
Definition: uigeninput.h:184
T x_
Definition: geometry.h:80
virtual void setText(const char *)=0
virtual void setValue(const char *s)
virtual void doSelect(CallBacker *)
Select is pressed. Called by doSelect_.
Definition: uigeninput.h:251
bool checked_
Definition: uigeninput.h:267
virtual void setEmpty()=0
float getFValue(float undefval) const
Definition: uigeninput.h:126
void setValue(const Coord &c)
Definition: uigeninput.h:190
double getDValue(double undefval) const
Definition: uigeninput.h:122
virtual bool isSingleLine() const
Definition: uigeninput.h:219
DataInpSpec * spec(int nr)
Definition: uigeninput.h:259
IdxType & crl()
Definition: posidxpair.h:46
#define mDeprecated
Definition: plfdefs.h:213
uiObject::SzPolicy elemSzPol() const
Definition: uigeninput.h:209
virtual od_int64 getInt64Value() const =0
Interval< float > getFInterval(int nr=0, float undefval=mUdf(float)) const
Definition: uigeninput.h:133
TypeSet< uiGenInputFieldIdx > & idxes_
Definition: uigeninput.h:235
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
Definition: uilabel.h:22
void setValues(bool v1, bool v2)
Definition: uigeninput.h:188
Notifier< uiGenInput > updateRequested
Definition: uigeninput.h:230
Definition: userinputobj.h:23
virtual float getFValue() const =0
bool isrequired_
Definition: uigeninput.h:241
Definition: uilineedit.h:49
bool isChecked() const
Definition: uigeninput.h:216
void setValue(const BinID &b)
Definition: uigeninput.h:192
2D point or vector class.
Definition: commontypes.h:58
Generalised data input field.
Definition: uigeninput_impl.h:31
bool isCheckable()
Definition: uigeninput.h:289
Definition: uibutton.h:130
bool finalised_
Definition: uigeninput.h:237
mDeprecated double getdValue(int nr=0, double uv=mUdf(double)) const
Definition: uigeninput.h:280
T y_
Definition: geometry.h:81
StepInterval< int > getIStepInterval(int nr=0, int undefval=mUdf(int)) const
Definition: uigeninput.h:145
mDeprecated float getfValue(int nr=0, float udfval=mUdf(float)) const
Definition: uigeninput.h:284
Interval< float > getFInterval(float undefval) const
Definition: uigeninput.h:136

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017