00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef FXSCROLLBAR_H
00022 #define FXSCROLLBAR_H
00023
00024 #ifndef FXWINDOW_H
00025 #include "FXWindow.h"
00026 #endif
00027
00028
00029 namespace FX {
00030
00031
00032
00034 enum {
00035 SCROLLBAR_VERTICAL = 0,
00036 SCROLLBAR_HORIZONTAL = 0x00020000,
00037 SCROLLBAR_WHEELJUMP = 0x00040000
00038 };
00039
00040
00041
00061 class FXAPI FXScrollBar : public FXWindow {
00062 FXDECLARE(FXScrollBar)
00063 protected:
00064 FXint range;
00065 FXint page;
00066 FXint line;
00067 FXint pos;
00068 FXint barsize;
00069 FXint thumbsize;
00070 FXint thumbpos;
00071 FXColor hiliteColor;
00072 FXColor shadowColor;
00073 FXColor borderColor;
00074 FXColor arrowColor;
00075 FXint dragpoint;
00076 FXuchar mode;
00077 protected:
00078 FXScrollBar();
00079 void drawButton(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00080 void drawThumb(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
00081 void drawLeftArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00082 void drawRightArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00083 void drawUpArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00084 void drawDownArrow(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h,FXbool down);
00085 protected:
00086 enum {
00087 MODE_NONE,
00088 MODE_INC,
00089 MODE_DEC,
00090 MODE_PAGE_INC,
00091 MODE_PAGE_DEC,
00092 MODE_DRAG,
00093 MODE_FINE_DRAG
00094 };
00095 private:
00096 FXScrollBar(const FXScrollBar&);
00097 FXScrollBar &operator=(const FXScrollBar&);
00098 public:
00099 long onPaint(FXObject*,FXSelector,void*);
00100 long onMotion(FXObject*,FXSelector,void*);
00101 long onMouseWheel(FXObject*,FXSelector,void*);
00102 long onLeftBtnPress(FXObject*,FXSelector,void*);
00103 long onLeftBtnRelease(FXObject*,FXSelector,void*);
00104 long onMiddleBtnPress(FXObject*,FXSelector,void*);
00105 long onMiddleBtnRelease(FXObject*,FXSelector,void*);
00106 long onRightBtnPress(FXObject*,FXSelector,void*);
00107 long onRightBtnRelease(FXObject*,FXSelector,void*);
00108 long onUngrabbed(FXObject*,FXSelector,void*);
00109 long onTimeWheel(FXObject*,FXSelector,void*);
00110 long onAutoScroll(FXObject*,FXSelector,void*);
00111 long onCmdSetValue(FXObject*,FXSelector,void*);
00112 long onCmdSetIntValue(FXObject*,FXSelector,void*);
00113 long onCmdGetIntValue(FXObject*,FXSelector,void*);
00114 long onCmdSetLongValue(FXObject*,FXSelector,void*);
00115 long onCmdGetLongValue(FXObject*,FXSelector,void*);
00116 long onCmdSetIntRange(FXObject*,FXSelector,void*);
00117 long onCmdGetIntRange(FXObject*,FXSelector,void*);
00118 public:
00119 enum{
00120 ID_AUTOSCROLL=FXWindow::ID_LAST,
00121 ID_TIMEWHEEL,
00122 ID_LAST
00123 };
00124 public:
00125
00127 FXScrollBar(FXComposite* p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=SCROLLBAR_VERTICAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00128
00130 virtual FXint getDefaultWidth();
00131
00133 virtual FXint getDefaultHeight();
00134
00136 virtual void layout();
00137
00142 void setRange(FXint r,FXbool notify=false);
00143
00145 FXint getRange() const { return range; }
00146
00151 void setPage(FXint p,FXbool notify=false);
00152
00154 FXint getPage() const { return page; }
00155
00161 void setPosition(FXint p,FXbool notify=false);
00162
00164 FXint getPosition() const { return pos; }
00165
00167 void setLine(FXint l);
00168
00170 FXint getLine() const { return line; }
00171
00173 void setHiliteColor(FXColor clr);
00174
00176 FXColor getHiliteColor() const { return hiliteColor; }
00177
00179 void setShadowColor(FXColor clr);
00180
00182 FXColor getShadowColor() const { return shadowColor; }
00183
00185 void setBorderColor(FXColor clr);
00186
00188 FXColor getBorderColor() const { return borderColor; }
00189
00191 void setArrowColor(FXColor clr);
00192
00194 FXColor getArrowColor() const { return arrowColor; }
00195
00197 void setScrollBarStyle(FXuint style);
00198
00200 FXuint getScrollBarStyle() const;
00201
00203 void setBarSize(FXint size);
00204
00206 FXint getBarSize() const { return barsize; }
00207
00209 virtual void save(FXStream& store) const;
00210
00212 virtual void load(FXStream& store);
00213
00215 virtual ~FXScrollBar();
00216 };
00217
00218
00220 class FXAPI FXScrollCorner : public FXWindow {
00221 FXDECLARE(FXScrollCorner)
00222 protected:
00223 FXScrollCorner();
00224 private:
00225 FXScrollCorner(const FXScrollCorner&);
00226 FXScrollCorner &operator=(const FXScrollCorner&);
00227 public:
00228 long onPaint(FXObject*,FXSelector,void*);
00229 public:
00230
00232 FXScrollCorner(FXComposite* p);
00233
00235 virtual void enable();
00236
00238 virtual void disable();
00239 };
00240
00241 }
00242
00243 #endif