00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef FXREALSLIDER_H
00025 #define FXREALSLIDER_H
00026
00027 #ifndef FXFRAME_H
00028 #include "FXFrame.h"
00029 #endif
00030
00031 namespace FX {
00032
00033
00034
00035 enum {
00036 REALSLIDER_HORIZONTAL = 0,
00037 REALSLIDER_VERTICAL = 0x00008000,
00038 REALSLIDER_ARROW_UP = 0x00010000,
00039 REALSLIDER_ARROW_DOWN = 0x00020000,
00040 REALSLIDER_ARROW_LEFT = REALSLIDER_ARROW_UP,
00041 REALSLIDER_ARROW_RIGHT = REALSLIDER_ARROW_DOWN,
00042 REALSLIDER_INSIDE_BAR = 0x00040000,
00043 REALSLIDER_TICKS_TOP = 0x00080000,
00044 REALSLIDER_TICKS_BOTTOM = 0x00100000,
00045 REALSLIDER_TICKS_LEFT = REALSLIDER_TICKS_TOP,
00046 REALSLIDER_TICKS_RIGHT = REALSLIDER_TICKS_BOTTOM,
00047 REALSLIDER_NORMAL = REALSLIDER_HORIZONTAL
00048 };
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 class FXAPI FXRealSlider : public FXFrame {
00061 FXDECLARE(FXRealSlider)
00062 protected:
00063 FXdouble range[2];
00064 FXdouble pos;
00065 FXdouble incr;
00066 FXdouble delta;
00067 FXint headpos;
00068 FXint headsize;
00069 FXint slotsize;
00070 FXColor slotColor;
00071 FXint dragpoint;
00072 FXString help;
00073 FXString tip;
00074 protected:
00075 FXRealSlider();
00076 void drawSliderHead(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00077 void drawHorzTicks(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00078 void drawVertTicks(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00079 private:
00080 FXRealSlider(const FXRealSlider&);
00081 FXRealSlider &operator=(const FXRealSlider&);
00082 public:
00083 long onPaint(FXObject*,FXSelector,void*);
00084 long onMotion(FXObject*,FXSelector,void*);
00085 long onMouseWheel(FXObject*,FXSelector,void*);
00086 long onLeftBtnPress(FXObject*,FXSelector,void*);
00087 long onLeftBtnRelease(FXObject*,FXSelector,void*);
00088 long onMiddleBtnPress(FXObject*,FXSelector,void*);
00089 long onMiddleBtnRelease(FXObject*,FXSelector,void*);
00090 long onKeyPress(FXObject*,FXSelector,void*);
00091 long onKeyRelease(FXObject*,FXSelector,void*);
00092 long onUngrabbed(FXObject*,FXSelector,void*);
00093 long onAutoSlide(FXObject*,FXSelector,void*);
00094 long onCmdSetValue(FXObject*,FXSelector,void*);
00095 long onCmdSetIntValue(FXObject*,FXSelector,void*);
00096 long onCmdGetIntValue(FXObject*,FXSelector,void*);
00097 long onCmdSetRealValue(FXObject*,FXSelector,void*);
00098 long onCmdGetRealValue(FXObject*,FXSelector,void*);
00099 long onCmdSetIntRange(FXObject*,FXSelector,void*);
00100 long onCmdGetIntRange(FXObject*,FXSelector,void*);
00101 long onCmdSetRealRange(FXObject*,FXSelector,void*);
00102 long onCmdGetRealRange(FXObject*,FXSelector,void*);
00103 long onCmdSetHelp(FXObject*,FXSelector,void*);
00104 long onCmdGetHelp(FXObject*,FXSelector,void*);
00105 long onCmdSetTip(FXObject*,FXSelector,void*);
00106 long onCmdGetTip(FXObject*,FXSelector,void*);
00107 long onQueryHelp(FXObject*,FXSelector,void*);
00108 long onQueryTip(FXObject*,FXSelector,void*);
00109 public:
00110 enum{
00111 ID_AUTOSLIDE=FXFrame::ID_LAST,
00112 ID_LAST
00113 };
00114 public:
00115
00116
00117 FXRealSlider(FXComposite* p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=REALSLIDER_NORMAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=0,FXint pr=0,FXint pt=0,FXint pb=0);
00118
00119
00120 virtual FXint getDefaultWidth();
00121
00122
00123 virtual FXint getDefaultHeight();
00124
00125
00126 virtual bool canFocus() const;
00127
00128
00129 virtual void layout();
00130
00131
00132 virtual void enable();
00133
00134
00135 virtual void disable();
00136
00137
00138 void setValue(FXdouble value,FXbool notify=FALSE);
00139
00140
00141 FXdouble getValue() const { return pos; }
00142
00143
00144 void setRange(FXdouble lo,FXdouble hi,FXbool notify=FALSE);
00145
00146
00147 void getRange(FXdouble& lo,FXdouble& hi) const { lo=range[0]; hi=range[1]; }
00148
00149
00150 FXuint getSliderStyle() const;
00151
00152
00153 void setSliderStyle(FXuint style);
00154
00155
00156 FXint getHeadSize() const { return headsize; }
00157
00158
00159 void setHeadSize(FXint hs);
00160
00161
00162 FXint getSlotSize() const { return slotsize; }
00163
00164
00165 void setSlotSize(FXint bs);
00166
00167
00168 FXdouble getIncrement() const { return incr; }
00169
00170
00171 void setIncrement(FXdouble inc);
00172
00173
00174 void setTickDelta(FXdouble dist);
00175
00176
00177 FXdouble getTickDelta() const { return delta; }
00178
00179
00180 void setSlotColor(FXColor clr);
00181
00182
00183 FXColor getSlotColor() const { return slotColor; }
00184
00185
00186 void setHelpText(const FXString& text){ help=text; }
00187
00188
00189 const FXString& getHelpText() const { return help; }
00190
00191
00192 void setTipText(const FXString& text){ tip=text; }
00193
00194
00195 const FXString& getTipText() const { return tip; }
00196
00197
00198 virtual void save(FXStream& store) const;
00199
00200
00201 virtual void load(FXStream& store);
00202
00203
00204 virtual ~FXRealSlider();
00205 };
00206
00207 }
00208
00209 #endif