00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _GLWBUTTON_H_
00022 #define _GLWBUTTON_H_
00023
00024 #include <GLW/GLWidget.h>
00025
00026 class GLWButtonI
00027 {
00028 public:
00029 virtual ~GLWButtonI();
00030
00031 virtual void buttonDown(unsigned int id) = 0;
00032 };
00033
00034 class GLWButton : public GLWidget
00035 {
00036 public:
00037 enum
00038 {
00039 ButtonFlagOk = 1,
00040 ButtonFlagCancel = 2,
00041 ButtonFlagCenterX = 4,
00042 ButtonSquare = 8
00043 };
00044
00045 GLWButton(float x = 0.0f, float y = 0.0f,
00046 float w = 0.0f, float h = 0.0f,
00047 GLWButtonI *handler = 0,
00048 unsigned flags = 0);
00049 virtual ~GLWButton();
00050
00051 virtual void draw();
00052 virtual void simulate(float frameTime);
00053 virtual void mouseDown(int button, float x, float y, bool &skipRest);
00054 virtual void mouseDrag(int button, float mx, float my, float x, float y, bool &skipRest);
00055 virtual void mouseUp(int button, float x, float y, bool &skipRest);
00056 virtual void keyDown(char *buffer, unsigned int keyState,
00057 KeyboardHistory::HistoryElement *history, int hisCount,
00058 bool &skipRest);
00059 bool &getPressed() { return pressed_; }
00060
00061 bool getEnabled() { return enabled_; }
00062 void setEnabled(bool enabled);
00063
00064 void setFlags(unsigned f) { flags_ = f; }
00065 unsigned int getFlags() { return flags_; }
00066
00067 virtual void setHandler(GLWButtonI *handler);
00068 void setRepeatMode() { repeatMode_ = true; }
00069
00070 REGISTER_CLASS_HEADER(GLWButton);
00071
00072 protected:
00073 GLWButtonI *handler_;
00074 unsigned flags_;
00075 bool startdrag_, pressed_;
00076 bool repeatMode_;
00077 bool enabled_;
00078 float repeatTime_;
00079
00080 };
00081
00082 #endif