00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef FXDATATARGET_H
00025 #define FXDATATARGET_H
00026
00027 #ifndef FXOBJECT_H
00028 #include "FXObject.h"
00029 #endif
00030
00031 namespace FX {
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 class FXAPI FXDataTarget : public FXObject {
00046 FXDECLARE(FXDataTarget)
00047 protected:
00048 FXObject *target;
00049 void *data;
00050 FXSelector message;
00051 FXuint type;
00052 public:
00053 long onCmdValue(FXObject*,FXSelector,void*);
00054 long onUpdValue(FXObject*,FXSelector,void*);
00055 long onCmdOption(FXObject*,FXSelector,void*);
00056 long onUpdOption(FXObject*,FXSelector,void*);
00057 public:
00058 enum {
00059 DT_VOID=0,
00060 DT_CHAR,
00061 DT_UCHAR,
00062 DT_SHORT,
00063 DT_USHORT,
00064 DT_INT,
00065 DT_UINT,
00066 DT_FLOAT,
00067 DT_DOUBLE,
00068 DT_STRING,
00069 DT_LAST
00070 };
00071 public:
00072 enum {
00073 ID_VALUE=1,
00074 ID_OPTION=ID_VALUE+10001,
00075 ID_LAST=ID_OPTION+10000
00076 };
00077 public:
00078
00079
00080 FXDataTarget(FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(NULL),message(sel),type(DT_VOID){}
00081
00082
00083 FXDataTarget(FXchar& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_CHAR){}
00084
00085
00086 FXDataTarget(FXuchar& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_UCHAR){}
00087
00088
00089 FXDataTarget(FXshort& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_SHORT){}
00090
00091
00092 FXDataTarget(FXushort& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_USHORT){}
00093
00094
00095 FXDataTarget(FXint& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_INT){}
00096
00097
00098 FXDataTarget(FXuint& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_UINT){}
00099
00100
00101 FXDataTarget(FXfloat& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_FLOAT){}
00102
00103
00104 FXDataTarget(FXdouble& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_DOUBLE){}
00105
00106
00107 FXDataTarget(FXString& value,FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_STRING){}
00108
00109
00110
00111 void setTarget(FXObject *t){ target=t; }
00112
00113
00114 FXObject* getTarget() const { return target; }
00115
00116
00117 void setSelector(FXSelector sel){ message=sel; }
00118
00119
00120 FXSelector getSelector() const { return message; }
00121
00122
00123
00124 FXuint getType() const { return type; }
00125
00126
00127 void* getData() const { return data; }
00128
00129
00130
00131 void connect(){ type=DT_VOID; data=NULL; }
00132
00133
00134 void connect(FXchar& value){ type=DT_CHAR; data=&value; }
00135
00136
00137 void connect(FXuchar& value){ type=DT_UCHAR; data=&value; }
00138
00139
00140 void connect(FXshort& value){ type=DT_SHORT; data=&value; }
00141
00142
00143 void connect(FXushort& value){ type=DT_USHORT; data=&value; }
00144
00145
00146 void connect(FXint& value){ type=DT_INT; data=&value; }
00147
00148
00149 void connect(FXuint& value){ type=DT_UINT; data=&value; }
00150
00151
00152 void connect(FXfloat& value){ type=DT_FLOAT; data=&value; }
00153
00154
00155 void connect(FXdouble& value){ type=DT_DOUBLE; data=&value; }
00156
00157
00158 void connect(FXString& value){ type=DT_STRING; data=&value; }
00159
00160
00161 virtual ~FXDataTarget();
00162 };
00163
00164 }
00165
00166 #endif