30 #include <vdk/vdkstring.h>
31 #include <vdk/vdkfont.h>
34 #ifdef USE_SIGCPLUSPLUS
35 # include <vdk/sigc_addon.h>
36 #endif // USE_SIGCPLUSPLUS
38 #define __rwproperty(ownerClass,propertyType) \
39 VDKReadWriteValueProp<ownerClass, propertyType>
40 #define __rproperty(ownerClass,propertyType) \
41 VDKReadOnlyValueProp<ownerClass, propertyType>
46 #define PFREAD_NULL (PFRead) 0x0000
47 #define PFWRITE_NULL (PFWrite) 0x0000
52 template <
class T,
typename S>
53 class VDKReadWriteValueProp
54 #ifdef USE_SIGCPLUSPLUS
61 typedef S (T::* PFRead)(void);
62 typedef void (T::*PFWrite)(S);
69 VDKReadWriteValueProp(VDKReadWriteValueProp& p) { }
70 void operator=(VDKReadWriteValueProp& p) { }
73 VDKReadWriteValueProp():
80 VDKReadWriteValueProp(
84 void (T::*write)(S) = NULL,
85 S (T::*read)(
void) = NULL
87 name(name),object(object),
92 virtual ~VDKReadWriteValueProp() {}
98 virtual void operator()(S val)
101 #ifdef USE_SIGCPLUSPLUS
102 OnValueChanged.emit(
object, value);
106 virtual void operator = (S val)
109 ((*object).*set)(val);
111 #ifdef USE_SIGCPLUSPLUS
112 OnValueChanged.emit(
object, value);
116 virtual operator S()
const
120 return ((*object).*get)();
124 char* Name() {
return name; }
125 S Value()
const {
return value; }
126 #ifdef USE_SIGCPLUSPLUS
127 DualSignal1<void, T*,S> OnValueChanged;
134 template <
class T,
class S>
135 class VDKReadOnlyValueProp:
public VDKReadWriteValueProp<T,S>
137 void operator = (S) { }
139 VDKReadOnlyValueProp():VDKReadWriteValueProp<T,S>() { }
140 VDKReadOnlyValueProp(
144 S (T::*read)(
void) = NULL,
145 void (T::*write)(S) = NULL
147 VDKReadWriteValueProp<T,S>(
154 virtual ~VDKReadOnlyValueProp() {}