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