00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FXBASEOBJECT_H
00023 #define FXBASEOBJECT_H
00024
00025
00026
00027
00028
00029 #ifdef _MSC_VER
00030 #include <windows_config.h>
00031 #else
00032 #include <config.h>
00033 #endif
00034
00035 #include <FXHash.h>
00036 using namespace FX;
00037 #ifndef FXOBJECT_H
00038 #include <FXObject.h>
00039 using namespace FX;
00040 #endif
00041 namespace FXEX {
00042
00050 #define FXMAPALL(func) {MKUINT(MINKEY,MINTYPE),MKUINT(MAXKEY,MAXTYPE),&func}
00051
00055 #define FXMAPKEY(key,func) {MKUINT(key,MINTYPE),MKUINT(key,MAXTYPE),&func}
00056
00057
00061 class
00062 FXBaseObject : public FXObject {
00063 FXDECLARE(FXBaseObject)
00064
00065 protected:
00067 enum {
00068 FLAG_ENABLED = 0x00000002,
00069 FLAG_UPDATE = 0x00000004,
00070 FLAG_FOCUSED = 0x00000010,
00071 FLAG_DIRTY = 0x00000020,
00072 FLAG_RECALC = 0x00000040,
00073 FLAG_DEFAULT = 0x00000200,
00074 FLAG_INITIAL = 0x00000400,
00075 FLAG_ACTIVE = 0x00001000,
00076 FLAG_CHANGED = 0x00010000,
00077 FLAG_READONLY = 0x10000000
00078 };
00079
00080 private:
00081 FXApp *app;
00082
00083 protected:
00084 FXObject *target;
00085 FXSelector message;
00086 void *data;
00087 FXuint datalen;
00088 FXuint flags;
00089 FXuint options;
00090
00091 public:
00092 enum {
00093 ID_NONE=0,
00094 ID_DELETE=6,
00095 ID_DISABLE,
00096 ID_ENABLE,
00097 ID_SETVALUE=17,
00098 ID_SETINTVALUE,
00099 ID_SETREALVALUE,
00100 ID_SETSTRINGVALUE,
00101 ID_SETINTRANGE,
00102 ID_SETREALRANGE,
00103 ID_GETINTVALUE,
00104 ID_GETREALVALUE,
00105 ID_GETSTRINGVALUE,
00106 ID_XML,
00107 ID_META,
00108 ID_COMMENT,
00109 ID_DOCUMENT,
00110 ID_TAG,
00111 ID_CONTENT,
00112 ID_LAST
00113 };
00114
00115 public:
00116 long onCmdEnable(FXObject*,FXSelector,void*);
00117 long onCmdDisable(FXObject*,FXSelector,void*);
00118 long onUpdate(FXObject*,FXSelector,void*);
00119
00120 public:
00122 FXBaseObject(FXObject *tgt=NULL,FXSelector sel=0);
00123
00125 FXBaseObject(FXApp *a,FXObject *tgt=NULL,FXSelector sel=0);
00126
00128 FXApp* getApp();
00129
00131 FXObject* getTarget() {
00132 return target;
00133 }
00134
00136 void setTarget(FXObject* tgt) {
00137 target=tgt;
00138 }
00139
00141 FXSelector getSelector() {
00142 return message;
00143 }
00144
00146 void setSelector(FXSelector sel) {
00147 message=sel;
00148 }
00149
00151 void* getUserData() {
00152 return data;
00153 }
00154
00156 void setUserData(void *d) {
00157 data=d;
00158 }
00159
00161 FXuint getUserDataLen() {
00162 return datalen;
00163 }
00164
00166 void setUserDataLen(FXuint len) {
00167 datalen=len;
00168 }
00169
00171 FXbool isEnabled() {
00172 return (flags&FLAG_ENABLED)!=0;
00173 }
00174
00176 virtual void enable() {
00177 flags|=FLAG_ENABLED;
00178 }
00179
00181 virtual void disable() {
00182 flags&=~FLAG_ENABLED;
00183 }
00184
00186 virtual FXbool isReadonly() {
00187 return (flags&FLAG_READONLY)!=0;
00188 }
00189
00191 virtual void setReadonly(FXbool mode=TRUE);
00192
00194 virtual void create() {}
00195
00197 virtual void detach() {}
00198
00200 virtual void destroy() {}
00201
00203 virtual void save(FXStream& store) const;
00204
00206 virtual void load(FXStream& store);
00207
00209 virtual ~FXBaseObject();
00210 };
00211
00212 }
00213 #endif // FXBASEOBJECT_H
00214