00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef FXREALSPINDIAL_H
00028 #define FXREALSPINDIAL_H
00029
00030
00031
00032
00033
00034 #ifdef _MSC_VER
00035 #include <windows_config.h>
00036 #else
00037 #include <config.h>
00038 #endif
00039
00040 #ifndef FXPACKER_H
00041 #include "FXPacker.h"
00042 #endif
00043
00044 namespace FX {
00045
00046
00047
00048 enum {
00049 SPINDIAL_CYCLIC = SPIN_CYCLIC,
00050 SPINDIAL_NOTEXT = SPIN_NOTEXT,
00051 SPINDIAL_NOMAX = SPIN_NOMAX,
00052 SPINDIAL_NOMIN = SPIN_NOMIN,
00053 SPINDIAL_LOG = 0x00200000,
00054 SPINDIAL_NODIAL = 0x00400000,
00055 SPINDIAL_NOBUTTONS = 0x00800000,
00056 SPINDIAL_NORMAL = SPINDIAL_NOBUTTONS
00057 };
00058
00059 enum {
00060 SPINDIAL_INC_NORMAL=0,
00061 SPINDIAL_INC_FINE=-1,
00062 SPINDIAL_INC_COARSE=1
00063 };
00064
00065 class FXRealSpinDialText;
00066 class FXDial;
00067
00068
00070 class FXRealSpinDial : public FXPacker {
00071 FXDECLARE(FXRealSpinDial)
00072 protected:
00073 FXRealSpinDialText *textField;
00074 FXArrowButton *upButton;
00075 FXArrowButton *downButton;
00076 FXDial *dial;
00077 FXdouble range[2];
00078 FXdouble incr[3];
00079 FXdouble pos;
00080 FXint dialpos;
00081 FXint keystate;
00082 protected:
00083 FXRealSpinDial();
00084 private:
00085 FXRealSpinDial(const FXRealSpinDial&);
00086 FXRealSpinDial& operator=(const FXRealSpinDial&);
00087 public:
00088 long onUpdDial(FXObject*,FXSelector,void*);
00089 long onChgDial(FXObject*,FXSelector,void*);
00090 long onCmdDial(FXObject*,FXSelector,void*);
00091 long onUpdIncrement(FXObject*,FXSelector,void*);
00092 long onCmdIncrement(FXObject*,FXSelector,void*);
00093 long onUpdDecrement(FXObject*,FXSelector,void*);
00094 long onCmdDecrement(FXObject*,FXSelector,void*);
00095 long onMouseWheel(FXObject*,FXSelector,void*);
00096 long onUpdEntry(FXObject*,FXSelector,void*);
00097 long onCmdEntry(FXObject*,FXSelector,void*);
00098 long onChgEntry(FXObject*,FXSelector,void*);
00099 long onKeyPress(FXObject*,FXSelector,void*);
00100 long onKeyRelease(FXObject*,FXSelector,void*);
00101 long onCmdSetValue(FXObject*,FXSelector,void*);
00102 long onCmdSetIntValue(FXObject*,FXSelector,void*);
00103 long onCmdGetIntValue(FXObject*,FXSelector,void*);
00104 long onCmdSetIntRange(FXObject*,FXSelector,void*);
00105 long onCmdGetIntRange(FXObject*,FXSelector,void*);
00106 long onCmdSetRealValue(FXObject*,FXSelector,void*);
00107 long onCmdGetRealValue(FXObject*,FXSelector,void*);
00108 long onCmdSetRealRange(FXObject*,FXSelector,void*);
00109 long onCmdGetRealRange(FXObject*,FXSelector,void*);
00110 long onMotion(FXObject*,FXSelector,void*);
00111
00112 public:
00113 enum {
00114 ID_DIAL=FXPacker::ID_LAST,
00115 ID_INCREMENT,
00116 ID_DECREMENT,
00117 ID_ENTRY,
00118 ID_LAST
00119 };
00120 public:
00121
00123 FXRealSpinDial(FXComposite *p,FXint cols,FXObject *tgt=NULL,
00124 FXSelector sel=0,FXuint opts=SPINDIAL_NORMAL,
00125 FXint x=0,FXint y=0,FXint w=0,FXint h=0,
00126 FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD
00127 );
00128
00130 virtual void create();
00131
00133 virtual void layout();
00134
00136 virtual void disable();
00137
00139 virtual void enable();
00140
00142 virtual FXint getDefaultWidth();
00143
00145 virtual FXint getDefaultHeight();
00146
00148 void increment(FXint incMode=SPINDIAL_INC_NORMAL);
00149
00151 void decrement(FXint incMode=SPINDIAL_INC_NORMAL);
00152
00154 FXbool isCyclic() const;
00155
00157 void setCyclic(FXbool cyclic);
00158
00160 FXbool isTextVisible() const;
00161
00163 void setTextVisible(FXbool shown);
00164
00166 FXbool isDialVisible() const;
00167
00169 void setDialVisible(FXbool shown);
00170
00172 virtual void setValue(FXdouble value);
00173
00175 FXdouble getValue() const {
00176 return pos;
00177 }
00178
00180 void setRange(FXdouble lo,FXdouble hi);
00181
00183 void getRange(FXdouble& lo,FXdouble& hi) const {
00184 lo=range[0];
00185 hi=range[1];
00186 }
00187
00189 void setIncrement(FXdouble increment);
00191 void setIncrements(FXdouble fine, FXdouble norm, FXdouble coarse);
00193 void setFineIncrement(FXdouble increment);
00195 void setCoarseIncrement(FXdouble increment);
00196
00198 FXdouble getIncrement() const {
00199 return incr[1];
00200 }
00202 FXdouble getFineIncrement() const {
00203 return incr[0];
00204 }
00206 FXdouble getCoarseIncrement() const {
00207 return incr[-1];
00208 }
00209
00211 void setFont(FXFont *fnt);
00212
00214 FXFont *getFont() const;
00215
00217 void setHelpText(const FXString& text);
00218
00220 FXString getHelpText() const;
00221
00223 void setTipText(const FXString& text);
00224
00226 FXString getTipText() const;
00227
00229 void setSpinnerStyle(FXuint style);
00230
00232 FXuint getSpinnerStyle() const;
00233
00235 void setEditable(FXbool edit=TRUE);
00236
00238 FXbool isEditable() const;
00239
00241 void setDialColor(FXColor clr);
00242
00244 FXColor getDialColor() const;
00245
00247 void setUpArrowColor(FXColor clr);
00248
00250 FXColor getUpArrowColor() const;
00251
00253 void setDownArrowColor(FXColor clr);
00254
00256 FXColor getDownArrowColor() const;
00257
00259 void setTextColor(FXColor clr);
00260
00262 FXColor getTextColor() const;
00263
00265 void setSelBackColor(FXColor clr);
00266
00268 FXColor getSelBackColor() const;
00269
00271 void setSelTextColor(FXColor clr);
00272
00274 FXColor getSelTextColor() const;
00275
00277 void setCursorColor(FXColor clr);
00278
00280 FXColor getCursorColor() const;
00281
00283 virtual void save(FXStream& store) const;
00284
00286 virtual void load(FXStream& store);
00287
00290 void setNumberFormat(FXint prec, FXbool bExp=FALSE);
00291
00293 FXint getNumberFormatPrecision() const;
00294
00296 FXbool getNumberFormatExponent() const;
00297
00301 void setFormatString(FXchar *fmt);
00302
00304 FXString getNumberFormatString() const;
00305
00307 void selectAll();
00308
00309 const FXDial &getDial() const;
00310
00312 virtual ~FXRealSpinDial();
00313 };
00314
00315 }
00316
00317
00318 #endif // FXREALSPINDIAL_H