+ void set_enabled(bool);
+ bool is_enabled() const { return !(state&DISABLED); }
+
+protected:
+ void set_state(State s) { set_state(s, s); }
+ void clear_state(State s) { set_state(s, NORMAL); }
+ void set_state(State, State);
+public:
+ State get_state() const { return state; }