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 #ifndef _uctrl_hpp_
00026 #define _uctrl_hpp_
00027
00028 #include <ubit/umode.hpp>
00029
00030
00042 class UCtrl: public UBrick {
00043 public:
00044 UCtrl();
00046
00047
00048
00049 virtual void enable(bool state, bool call_callbacks = true);
00050 void setEnabled(bool b) {enable(b);}
00057 bool isEnabled() const;
00065
00066
00067 virtual void select(bool state, bool call_callbacks = true);
00068 void setSelected(bool b) {select(b);}
00075 bool isSelected() const {return (cmodes & UMode::SELECTED) != 0;}
00082 bool isSelectable() const {return (cmodes & UMode::CAN_SELECT) != 0;}
00090
00091
00092 virtual bool isShown() const;
00102 bool isShowable() const {return (cmodes & UMode::CAN_SHOW) != 0;}
00111
00112
00113 virtual void update() = 0;
00114 virtual void update(UUpdate) = 0;
00120
00121
00122
00123 bool isCmode(u_modes _cmodes) const {return ((cmodes & _cmodes) != 0);}
00125
00126 u_modes getCmodes() const {return cmodes;}
00128
00129 void setCmodes(u_modes _cmodes, bool state);
00131
00132
00133
00134 bool isDef(UMode &m) const
00135 {return ((cmodes & m.cmodes) != 0 || (bmodes & m.bmodes) != 0);}
00137
00138 bool isDef(u_modes some_Bmodes, u_modes some_Cmodes) const
00139 {return ((cmodes & some_Cmodes) != 0 || (bmodes & some_Bmodes) != 0);}
00141
00142 bool isAllDef(u_modes all_Bmodes, u_modes all_Cmodes) const
00143 {return ((cmodes&all_Cmodes)==all_Cmodes && (bmodes&all_Bmodes)==all_Bmodes);}
00145
00146 void setState(u_state istate);
00147 u_state getState() const {return istate;}
00149
00150
00151
00152
00153
00154 #ifndef NO_DOC
00155 protected:
00156 friend class UMode;
00157 friend class UOn;
00158 friend class UAppli;
00159 friend class UFlow;
00160
00161 enum {STANDARD, BROWSING, TYPING};
00162 u_modes cmodes;
00163 u_state istate;
00164
00165 virtual void updateView(UEvent&, class UView*, const class UUpdate&) = 0;
00166
00167 virtual void enterBehavior(class UFlow&, UEvent&, int bstyle);
00168 virtual void leaveBehavior(class UFlow&, UEvent&);
00169 virtual void armBehavior(class UFlow&, UEvent&, int bstyle);
00170 virtual bool disarmBehavior(class UFlow&, UEvent&, int bstyle);
00171 virtual bool actionBehavior(class UFlow&, UEvent&);
00172 virtual void keyPressBehavior(class UFlow&, UEvent&);
00173 virtual void keyReleaseBehavior(class UFlow&, UEvent&);
00174 };
00175 #endif
00176
00177
00178
00179 #endif
00180