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