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_LONG,
00067     DT_ULONG,
00068     DT_FLOAT,
00069     DT_DOUBLE,
00070     DT_STRING,
00071     DT_LAST
00072     };
00073 
public:
00074   enum {
00075     ID_VALUE=1,                   
00076     ID_OPTION=ID_VALUE+10001,     
00077     ID_LAST=ID_OPTION+10000
00078     };
00079 
public:
00080 
00081 
00082   FXDataTarget(
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(NULL),message(sel),type(DT_VOID){}
00083 
00084 
00085   FXDataTarget(FXchar& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_CHAR){}
00086 
00087 
00088   FXDataTarget(FXuchar& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_UCHAR){}
00089 
00090 
00091   FXDataTarget(FXshort& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_SHORT){}
00092 
00093 
00094   FXDataTarget(FXushort& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_USHORT){}
00095 
00096 
00097   FXDataTarget(FXint& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_INT){}
00098 
00099 
00100   FXDataTarget(FXuint& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_UINT){}
00101 
00102 
00103   FXDataTarget(FXlong& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_LONG){}
00104 
00105 
00106   FXDataTarget(FXulong& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_ULONG){}
00107 
00108 
00109   FXDataTarget(FXfloat& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_FLOAT){}
00110 
00111 
00112   FXDataTarget(FXdouble& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_DOUBLE){}
00113 
00114 
00115   FXDataTarget(
FXString& value,
FXObject* tgt=NULL,FXSelector sel=0):target(tgt),data(&value),message(sel),type(DT_STRING){}
00116 
00117 
00118 
00119   void setTarget(
FXObject *t){ target=t; }
00120 
00121 
00122   FXObject* getTarget()
 const { 
return target; }
00123 
00124 
00125   void setSelector(FXSelector sel){ message=sel; }
00126 
00127 
00128   FXSelector getSelector()
 const { 
return message; }
00129 
00130 
00131 
00132   FXuint getType()
 const { 
return type; }
00133 
00134 
00135   
void* getData()
 const { 
return data; }
00136 
00137 
00138 
00139   
void connect(){ type=DT_VOID; data=NULL; }
00140 
00141 
00142   
void connect(FXchar& value){ type=DT_CHAR; data=&value; }
00143 
00144 
00145   
void connect(FXuchar& value){ type=DT_UCHAR; data=&value; }
00146 
00147 
00148   
void connect(FXshort& value){ type=DT_SHORT; data=&value; }
00149 
00150 
00151   
void connect(FXushort& value){ type=DT_USHORT; data=&value; }
00152 
00153 
00154   
void connect(FXint& value){ type=DT_INT; data=&value; }
00155 
00156 
00157   
void connect(FXuint& value){ type=DT_UINT; data=&value; }
00158 
00159 
00160   
void connect(FXlong& value){ type=DT_LONG; data=&value; }
00161 
00162 
00163   
void connect(FXulong& value){ type=DT_ULONG; data=&value; }
00164 
00165 
00166   
void connect(FXfloat& value){ type=DT_FLOAT; data=&value; }
00167 
00168 
00169   
void connect(FXdouble& value){ type=DT_DOUBLE; data=&value; }
00170 
00171 
00172   
void connect(FXString& value){ type=DT_STRING; data=&value; }
00173 
00174 
00175   
virtual ~FXDataTarget();
00176   };
00177 
00178 }
00179 
00180 
#endif