00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef FXDATATARGET_H
00022 #define FXDATATARGET_H
00023
00024 #ifndef FXOBJECT_H
00025 #include "FXObject.h"
00026 #endif
00027
00028 namespace FX {
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 class FXAPI FXDataTarget : public FXObject {
00047 FXDECLARE(FXDataTarget)
00048 protected:
00049 void *data;
00050 FXObject *target;
00051 FXSelector message;
00052 FXuint type;
00053 private:
00054 FXDataTarget(const FXDataTarget&);
00055 FXDataTarget& operator=(const FXDataTarget&);
00056 public:
00057 long onCmdValue(FXObject*,FXSelector,void*);
00058 long onUpdValue(FXObject*,FXSelector,void*);
00059 long onCmdOption(FXObject*,FXSelector,void*);
00060 long onUpdOption(FXObject*,FXSelector,void*);
00061 public:
00062 enum {
00063 DT_VOID=0,
00064 DT_BOOL,
00065 DT_CHAR,
00066 DT_UCHAR,
00067 DT_SHORT,
00068 DT_USHORT,
00069 DT_INT,
00070 DT_UINT,
00071 DT_LONG,
00072 DT_ULONG,
00073 DT_FLOAT,
00074 DT_DOUBLE,
00075 DT_STRING,
00076 DT_LAST
00077 };
00078 public:
00079 enum {
00080 ID_VALUE=1,
00081 ID_OPTION=ID_VALUE+10001,
00082 ID_LAST=ID_OPTION+10000
00083 };
00084 public:
00085
00086
00087 FXDataTarget():data(NULL),target(NULL),message(0),type(DT_VOID){}
00088
00089
00090 FXDataTarget(FXObject* tgt,FXSelector sel):data(NULL),target(tgt),message(sel),type(DT_VOID){}
00091
00092
00093 FXDataTarget(FXbool& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_BOOL){}
00094
00095
00096 FXDataTarget(FXchar& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_CHAR){}
00097
00098
00099 FXDataTarget(FXuchar& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_UCHAR){}
00100
00101
00102 FXDataTarget(FXshort& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_SHORT){}
00103
00104
00105 FXDataTarget(FXushort& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_USHORT){}
00106
00107
00108 FXDataTarget(FXint& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_INT){}
00109
00110
00111 FXDataTarget(FXuint& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_UINT){}
00112
00113
00114 FXDataTarget(FXlong& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_LONG){}
00115
00116
00117 FXDataTarget(FXulong& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_ULONG){}
00118
00119
00120 FXDataTarget(FXfloat& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_FLOAT){}
00121
00122
00123 FXDataTarget(FXdouble& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_DOUBLE){}
00124
00125
00126 FXDataTarget(FXString& value,FXObject* tgt=NULL,FXSelector sel=0):data(&value),target(tgt),message(sel),type(DT_STRING){}
00127
00128
00129
00130 void setTarget(FXObject *t){ target=t; }
00131
00132
00133 FXObject* getTarget() const { return target; }
00134
00135
00136
00137 void setSelector(FXSelector sel){ message=sel; }
00138
00139
00140 FXSelector getSelector() const { return message; }
00141
00142
00143
00144 FXuint getType() const { return type; }
00145
00146
00147 void* getData() const { return data; }
00148
00149
00150
00151 void connect(){ data=NULL; type=DT_VOID; }
00152
00153
00154 void connect(FXbool& value){ data=&value; type=DT_BOOL; }
00155
00156
00157 void connect(FXchar& value){ data=&value; type=DT_CHAR; }
00158
00159
00160 void connect(FXuchar& value){ data=&value; type=DT_UCHAR; }
00161
00162
00163 void connect(FXshort& value){ data=&value; type=DT_SHORT; }
00164
00165
00166 void connect(FXushort& value){ data=&value; type=DT_USHORT; }
00167
00168
00169 void connect(FXint& value){ data=&value; type=DT_INT; }
00170
00171
00172 void connect(FXuint& value){ data=&value; type=DT_UINT; }
00173
00174
00175 void connect(FXlong& value){ data=&value; type=DT_LONG; }
00176
00177
00178 void connect(FXulong& value){ data=&value; type=DT_ULONG; }
00179
00180
00181 void connect(FXfloat& value){ data=&value; type=DT_FLOAT; }
00182
00183
00184 void connect(FXdouble& value){ data=&value; type=DT_DOUBLE; }
00185
00186
00187 void connect(FXString& value){ data=&value; type=DT_STRING; }
00188
00189
00190
00191 void connect(FXObject* tgt,FXSelector sel){ data=NULL; target=tgt; message=sel; type=DT_VOID; }
00192
00193
00194 void connect(FXbool& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_BOOL; }
00195
00196
00197 void connect(FXchar& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_CHAR; }
00198
00199
00200 void connect(FXuchar& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_UCHAR; }
00201
00202
00203 void connect(FXshort& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_SHORT; }
00204
00205
00206 void connect(FXushort& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_USHORT; }
00207
00208
00209 void connect(FXint& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_INT; }
00210
00211
00212 void connect(FXuint& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_UINT; }
00213
00214
00215 void connect(FXlong& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_LONG; }
00216
00217
00218 void connect(FXulong& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_ULONG; }
00219
00220
00221 void connect(FXfloat& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_FLOAT; }
00222
00223
00224 void connect(FXdouble& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_DOUBLE; }
00225
00226
00227 void connect(FXString& value,FXObject* tgt,FXSelector sel){ data=&value; target=tgt; message=sel; type=DT_STRING; }
00228
00229
00230
00231 virtual ~FXDataTarget();
00232 };
00233
00234 }
00235
00236 #endif