00001 #ifndef QBBUTTON_H
00002 #define QBBUTTON_H
00003
00004 #include "QbWidget.h"
00005
00009 class QbButton : public QbWidget {
00010 SO_NODE_ABSTRACT_HEADER(QbButton);
00011 typedef QbWidget inherited;
00012
00013 public:
00014 static void initClass(void);
00015
00017 QbButton(void);
00018
00019 SoSFNode modelOff;
00020 SoSFNode modelOffDown;
00021 SoSFNode modelOffDisabled;
00022
00023 SoSFNode modelOn;
00024 SoSFNode modelOnDown;
00025 SoSFNode modelOnDisabled;
00026
00027 SoSFBool isToggle;
00028 SoSFBool down;
00029 SoSFBool on;
00030 SoSFBool enabled;
00031
00032 virtual void notify(SoNotList * list);
00033 virtual void pick(SoPickAction * action);
00034
00035 protected:
00036 virtual void doMouseDown(const SoMouseButtonEvent::Button button);
00037 virtual void doMouseUp(const SoMouseButtonEvent::Button button);
00038 virtual void doClick();
00039 virtual void doClickCancel();
00040
00041 enum State { OFF, OFFDOWN, OFFDISABLED, ON, ONDOWN, ONDISABLED };
00042 State state;
00043 SoSwitch * switchNode;
00044 void replaceModel(State s, SoNode *model);
00045 void switchState(State s);
00046 void setEnabled(bool e);
00047 void setOn(bool o);
00048 void setDown(bool d);
00049
00050 private:
00051 void connectOutFields(SoNode *model);
00052 };
00053
00054 #endif