00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _CEGUIFalPropertyLinkDefinition_h_
00029 #define _CEGUIFalPropertyLinkDefinition_h_
00030
00031 #include "CEGUIFalPropertyDefinitionBase.h"
00032 #include <vector>
00033
00034 #if defined (_MSC_VER)
00035 # pragma warning(push)
00036 # pragma warning(disable : 4251)
00037 #endif
00038
00039
00040 namespace CEGUI
00041 {
00047 class CEGUIEXPORT PropertyLinkDefinition : public PropertyDefinitionBase
00048 {
00049 public:
00050 PropertyLinkDefinition(const String& propertyName, const String& widgetNameSuffix, const String& targetProperty, const String& initialValue, bool redrawOnWrite, bool layoutOnWrite);
00051
00053 void addLinkTarget(const String& widget, const String& property);
00055 void clearLinkTargets();
00056
00057
00058 String get(const PropertyReceiver* receiver) const;
00059 void set(PropertyReceiver* receiver, const String& value);
00060
00061 protected:
00062 void writeXMLElementType(XMLSerializer& xml_stream) const;
00063 void writeXMLAttributes(XMLSerializer& xml_stream) const;
00064
00077 const Window* getTargetWindow(const PropertyReceiver* receiver) const;
00078
00084 Window* getTargetWindow(PropertyReceiver* receiver);
00085
00087 const Window* getTargetWindow(const PropertyReceiver* receiver,
00088 const String& name_suffix) const;
00089
00091 Window* getTargetWindow(PropertyReceiver* receiver,
00092 const String& name_suffix);
00093
00095 struct LinkTarget
00096 {
00098 String d_widgetNameSuffix;
00100 String d_targetProperty;
00101 };
00102
00104 typedef std::vector<LinkTarget> LinkTargetCollection;
00105
00107 LinkTargetCollection d_targets;
00108 };
00109
00110 }
00111
00112 #if defined (_MSC_VER)
00113 # pragma warning(pop)
00114 #endif
00115
00116 #endif // end of guard _CEGUIFalPropertyLinkDefinition_h_