// Author: Julian Smart
// Modified by: Ron Lee
// Created: 01/02/97
-// RCS-ID: $Id: rtti.h 48412 2007-08-27 17:04:02Z FM $
+// RCS-ID: $Id$
// Copyright: (c) 1997 Julian Smart
// (c) 2001 Ron Lee <ron@debian.org>
// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: wx/variantbase.h\r
-// Purpose: wxVariantBase class, a minimal version of wxVariant used by XTI\r
-// Author: Julian Smart\r
-// Modified by: Francesco Montorsi\r
-// Created: 10/09/98\r
-// RCS-ID: $Id: variant.h 44625 2007-03-07 11:35:04Z VZ $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-#ifndef _WX_VARIANTBASE_H_\r
-#define _WX_VARIANTBASE_H_\r
-\r
-#include "wx/defs.h"\r
-\r
-#if wxUSE_VARIANT\r
-\r
-#include "wx/string.h"\r
-#include "wx/arrstr.h"\r
-#include "wx/cpp.h"\r
-#include <typeinfo>\r
-\r
-#if wxUSE_DATETIME\r
- #include "wx/datetime.h"\r
-#endif // wxUSE_DATETIME\r
-\r
-#include "wx/iosfwrap.h"\r
-\r
-class wxTypeInfo;\r
-class wxObject;\r
-class wxClassInfo;\r
-\r
-/*\r
- * wxVariantData stores the actual data in a wxVariant object,\r
- * to allow it to store any type of data.\r
- * Derive from this to provide custom data handling.\r
- *\r
- * NB: To prevent addition of extra vtbl pointer to wxVariantData,\r
- * we don't multiple-inherit from wxObjectRefData. Instead,\r
- * we simply replicate the wxObject ref-counting scheme.\r
- *\r
- * NB: When you construct a wxVariantData, it will have refcount\r
- * of one. Refcount will not be further increased when\r
- * it is passed to wxVariant. This simulates old common\r
- * scenario where wxVariant took ownership of wxVariantData\r
- * passed to it.\r
- * If you create wxVariantData for other reasons than passing\r
- * it to wxVariant, technically you are not required to call\r
- * DecRef() before deleting it.\r
- *\r
- * TODO: in order to replace wxPropertyValue, we would need\r
- * to consider adding constructors that take pointers to C++ variables,\r
- * or removing that functionality from the wxProperty library.\r
- * Essentially wxPropertyValue takes on some of the wxValidator functionality\r
- * by storing pointers and not just actual values, allowing update of C++ data\r
- * to be handled automatically. Perhaps there's another way of doing this without\r
- * overloading wxVariant with unnecessary functionality.\r
- */\r
-\r
-class WXDLLIMPEXP_BASE wxVariantData\r
-{\r
- friend class wxVariantBase;\r
-\r
-public:\r
- wxVariantData()\r
- : m_count(1)\r
- { }\r
-\r
-#if wxUSE_STD_IOSTREAM\r
- virtual bool Write(wxSTD ostream& WXUNUSED(str)) const { return false; }\r
- virtual bool Read(wxSTD istream& WXUNUSED(str)) { return false; }\r
-#endif\r
- virtual bool Write(wxString& WXUNUSED(str)) const { return false; }\r
- virtual bool Read(wxString& WXUNUSED(str)) { return false; }\r
-\r
- // Override these to provide common functionality\r
- virtual bool Eq(wxVariantData& data) const = 0;\r
-\r
- // What type is it? Return a string name.\r
- virtual wxString GetType() const = 0;\r
-\r
- // returns the type info of the content\r
- virtual const wxTypeInfo* GetTypeInfo() const = 0;\r
-\r
- // If it based on wxObject return the ClassInfo.\r
- virtual wxClassInfo* GetValueClassInfo() { return NULL; }\r
-\r
- int GetRefCount() const \r
- { return m_count; }\r
- void IncRef() \r
- { m_count++; }\r
- void DecRef()\r
- {\r
- if ( --m_count == 0 )\r
- delete this;\r
- }\r
-\r
-protected:\r
- // Protected dtor should make some incompatible code\r
- // break more louder. That is, they should do data->DecRef()\r
- // instead of delete data.\r
- virtual ~wxVariantData() {}\r
-\r
-private:\r
- int m_count;\r
-};\r
-\r
-template<typename T> class wxVariantDataT : public wxVariantData\r
-{\r
-public:\r
- wxVariantDataT(const T& d) : m_data(d) {}\r
- virtual ~wxVariantDataT() {}\r
-\r
- // get a ref to the stored data\r
- T & Get() { return m_data; }\r
-\r
- // get a const ref to the stored data\r
- const T & Get() const { return m_data; }\r
-\r
- // set the data\r
- void Set(const T& d) { m_data = d; }\r
-\r
- // Override these to provide common functionality\r
- virtual bool Eq(wxVariantData& WXUNUSED(data)) const\r
- { return false; /* FIXME!! */ }\r
-\r
- // What type is it? Return a string name.\r
- virtual wxString GetType() const\r
- { return GetTypeInfo()->GetTypeName(); }\r
-\r
- // return a heap allocated duplicate\r
- //virtual wxVariantData* Clone() const { return new wxVariantDataT<T>( Get() ); }\r
-\r
- // returns the type info of the contentc\r
- virtual const wxTypeInfo* GetTypeInfo() const { return wxGetTypeInfo( (T*) NULL ); }\r
-\r
-private:\r
- T m_data;\r
-};\r
-\r
-\r
-/*\r
- * wxVariantBase can store any kind of data, but has some basic types\r
- * built in.\r
- */\r
-\r
-class WXDLLIMPEXP_BASE wxVariantBase\r
-{\r
-public:\r
- wxVariantBase();\r
- wxVariantBase(const wxVariantBase& variant);\r
- wxVariantBase(wxVariantData* data, const wxString& name = wxEmptyString);\r
-\r
- template<typename T> \r
- wxVariantBase(const T& data, const wxString& name = wxEmptyString) :\r
- m_data(new wxVariantDataT<T>(data)), m_name(name) {}\r
-\r
- virtual ~wxVariantBase();\r
-\r
- // generic assignment\r
- void operator= (const wxVariantBase& variant);\r
-\r
- // Assignment using data, e.g.\r
- // myVariant = new wxStringVariantData("hello");\r
- void operator= (wxVariantData* variantData);\r
-\r
- bool operator== (const wxVariantBase& variant) const;\r
- bool operator!= (const wxVariantBase& variant) const;\r
-\r
- // Sets/gets name\r
- inline void SetName(const wxString& name) { m_name = name; }\r
- inline const wxString& GetName() const { return m_name; }\r
-\r
- // Tests whether there is data\r
- bool IsNull() const;\r
-\r
- // FIXME: used by wxVariantBase code but is nice wording...\r
- bool IsEmpty() const { return IsNull(); }\r
-\r
- // For compatibility with wxWidgets <= 2.6, this doesn't increase\r
- // reference count.\r
- wxVariantData* GetData() const { return m_data; }\r
- void SetData(wxVariantData* data) ;\r
-\r
- // make a 'clone' of the object\r
- void Ref(const wxVariantBase& clone);\r
-\r
- // destroy a reference\r
- void UnRef();\r
-\r
- // Make NULL (i.e. delete the data)\r
- void MakeNull();\r
-\r
- // write contents to a string (e.g. for debugging)\r
- wxString MakeString() const;\r
-\r
- // Delete data and name\r
- void Clear();\r
-\r
- // Returns a string representing the type of the variant,\r
- // e.g. "string", "bool", "stringlist", "list", "double", "long"\r
- wxString GetType() const;\r
-\r
- bool IsType(const wxString& type) const;\r
- bool IsValueKindOf(const wxClassInfo* type) const;\r
-\r
- // FIXME wxXTI methods:\r
-\r
- // get the typeinfo of the stored object\r
- const wxTypeInfo* GetTypeInfo() const \r
- { \r
- if (!m_data)\r
- return NULL;\r
- return m_data->GetTypeInfo(); \r
- }\r
-\r
- // get a ref to the stored data\r
- template<typename T> T& Get(wxTEMPLATED_MEMBER_FIX(T))\r
- {\r
- wxVariantDataT<T> *dataptr = \r
- wx_dynamic_cast(wxVariantDataT<T>*, m_data);\r
- wxASSERT_MSG( dataptr, \r
- wxString::Format(wxT("Cast to %s not possible"), typeid(T).name()) );\r
- return dataptr->Get();\r
- }\r
-\r
- // get a const ref to the stored data\r
- template<typename T> const T& Get(wxTEMPLATED_MEMBER_FIX(T)) const\r
- {\r
- const wxVariantDataT<T> *dataptr = \r
- wx_dynamic_cast(const wxVariantDataT<T>*, m_data);\r
- wxASSERT_MSG( dataptr, \r
- wxString::Format(wxT("Cast to %s not possible"), typeid(T).name()) );\r
- return dataptr->Get();\r
- }\r
-\r
- template<typename T> bool HasData(wxTEMPLATED_MEMBER_FIX(T)) const\r
- {\r
- const wxVariantDataT<T> *dataptr = \r
- wx_dynamic_cast(const wxVariantDataT<T>*, m_data);\r
- return dataptr != NULL;\r
- }\r
-\r
- // returns this value as string\r
- wxString GetAsString() const;\r
-\r
- // gets the stored data casted to a wxObject*, \r
- // returning NULL if cast is not possible\r
- wxObject* GetAsObject();\r
-\r
-protected:\r
- wxVariantData* m_data;\r
- wxString m_name;\r
-};\r
-\r
-#include "wx/dynarray.h"\r
-WX_DECLARE_OBJARRAY_WITH_DECL(wxVariantBase, wxVariantBaseArray, class WXDLLIMPEXP_BASE);\r
-\r
-\r
-// templated streaming, every type must have their specialization for these methods\r
-\r
-template<typename T>\r
-void wxStringReadValue( const wxString &s, T &data );\r
-\r
-template<typename T>\r
-void wxStringWriteValue( wxString &s, const T &data);\r
-\r
-template<typename T>\r
-void wxToStringConverter( const wxVariantBase &v, wxString &s wxTEMPLATED_FUNCTION_FIX(T)) \\r
- { wxStringWriteValue( s, v.wxTEMPLATED_MEMBER_CALL(Get, T) ); }\r
-\r
-template<typename T>\r
-void wxFromStringConverter( const wxString &s, wxVariantBase &v wxTEMPLATED_FUNCTION_FIX(T)) \\r
- { T d; wxStringReadValue( s, d ); v = wxVariantBase(d); }\r
-\r
-\r
-#endif // wxUSE_VARIANT\r
-#endif // _WX_VARIANTBASE_H_\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/variantbase.h
+// Purpose: wxVariantBase class, a minimal version of wxVariant used by XTI
+// Author: Julian Smart
+// Modified by: Francesco Montorsi
+// Created: 10/09/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_VARIANTBASE_H_
+#define _WX_VARIANTBASE_H_
+
+#include "wx/defs.h"
+
+#if wxUSE_VARIANT
+
+#include "wx/string.h"
+#include "wx/arrstr.h"
+#include "wx/cpp.h"
+#include <typeinfo>
+
+#if wxUSE_DATETIME
+ #include "wx/datetime.h"
+#endif // wxUSE_DATETIME
+
+#include "wx/iosfwrap.h"
+
+class wxTypeInfo;
+class wxObject;
+class wxClassInfo;
+
+/*
+ * wxVariantData stores the actual data in a wxVariant object,
+ * to allow it to store any type of data.
+ * Derive from this to provide custom data handling.
+ *
+ * NB: To prevent addition of extra vtbl pointer to wxVariantData,
+ * we don't multiple-inherit from wxObjectRefData. Instead,
+ * we simply replicate the wxObject ref-counting scheme.
+ *
+ * NB: When you construct a wxVariantData, it will have refcount
+ * of one. Refcount will not be further increased when
+ * it is passed to wxVariant. This simulates old common
+ * scenario where wxVariant took ownership of wxVariantData
+ * passed to it.
+ * If you create wxVariantData for other reasons than passing
+ * it to wxVariant, technically you are not required to call
+ * DecRef() before deleting it.
+ *
+ * TODO: in order to replace wxPropertyValue, we would need
+ * to consider adding constructors that take pointers to C++ variables,
+ * or removing that functionality from the wxProperty library.
+ * Essentially wxPropertyValue takes on some of the wxValidator functionality
+ * by storing pointers and not just actual values, allowing update of C++ data
+ * to be handled automatically. Perhaps there's another way of doing this without
+ * overloading wxVariant with unnecessary functionality.
+ */
+
+class WXDLLIMPEXP_BASE wxVariantData
+{
+ friend class wxVariantBase;
+
+public:
+ wxVariantData()
+ : m_count(1)
+ { }
+
+#if wxUSE_STD_IOSTREAM
+ virtual bool Write(wxSTD ostream& WXUNUSED(str)) const { return false; }
+ virtual bool Read(wxSTD istream& WXUNUSED(str)) { return false; }
+#endif
+ virtual bool Write(wxString& WXUNUSED(str)) const { return false; }
+ virtual bool Read(wxString& WXUNUSED(str)) { return false; }
+
+ // Override these to provide common functionality
+ virtual bool Eq(wxVariantData& data) const = 0;
+
+ // What type is it? Return a string name.
+ virtual wxString GetType() const = 0;
+
+ // returns the type info of the content
+ virtual const wxTypeInfo* GetTypeInfo() const = 0;
+
+ // If it based on wxObject return the ClassInfo.
+ virtual wxClassInfo* GetValueClassInfo() { return NULL; }
+
+ int GetRefCount() const
+ { return m_count; }
+ void IncRef()
+ { m_count++; }
+ void DecRef()
+ {
+ if ( --m_count == 0 )
+ delete this;
+ }
+
+protected:
+ // Protected dtor should make some incompatible code
+ // break more louder. That is, they should do data->DecRef()
+ // instead of delete data.
+ virtual ~wxVariantData() {}
+
+private:
+ int m_count;
+};
+
+template<typename T> class wxVariantDataT : public wxVariantData
+{
+public:
+ wxVariantDataT(const T& d) : m_data(d) {}
+ virtual ~wxVariantDataT() {}
+
+ // get a ref to the stored data
+ T & Get() { return m_data; }
+
+ // get a const ref to the stored data
+ const T & Get() const { return m_data; }
+
+ // set the data
+ void Set(const T& d) { m_data = d; }
+
+ // Override these to provide common functionality
+ virtual bool Eq(wxVariantData& WXUNUSED(data)) const
+ { return false; /* FIXME!! */ }
+
+ // What type is it? Return a string name.
+ virtual wxString GetType() const
+ { return GetTypeInfo()->GetTypeName(); }
+
+ // return a heap allocated duplicate
+ //virtual wxVariantData* Clone() const { return new wxVariantDataT<T>( Get() ); }
+
+ // returns the type info of the contentc
+ virtual const wxTypeInfo* GetTypeInfo() const { return wxGetTypeInfo( (T*) NULL ); }
+
+private:
+ T m_data;
+};
+
+
+/*
+ * wxVariantBase can store any kind of data, but has some basic types
+ * built in.
+ */
+
+class WXDLLIMPEXP_BASE wxVariantBase
+{
+public:
+ wxVariantBase();
+ wxVariantBase(const wxVariantBase& variant);
+ wxVariantBase(wxVariantData* data, const wxString& name = wxEmptyString);
+
+ template<typename T>
+ wxVariantBase(const T& data, const wxString& name = wxEmptyString) :
+ m_data(new wxVariantDataT<T>(data)), m_name(name) {}
+
+ virtual ~wxVariantBase();
+
+ // generic assignment
+ void operator= (const wxVariantBase& variant);
+
+ // Assignment using data, e.g.
+ // myVariant = new wxStringVariantData("hello");
+ void operator= (wxVariantData* variantData);
+
+ bool operator== (const wxVariantBase& variant) const;
+ bool operator!= (const wxVariantBase& variant) const;
+
+ // Sets/gets name
+ inline void SetName(const wxString& name) { m_name = name; }
+ inline const wxString& GetName() const { return m_name; }
+
+ // Tests whether there is data
+ bool IsNull() const;
+
+ // FIXME: used by wxVariantBase code but is nice wording...
+ bool IsEmpty() const { return IsNull(); }
+
+ // For compatibility with wxWidgets <= 2.6, this doesn't increase
+ // reference count.
+ wxVariantData* GetData() const { return m_data; }
+ void SetData(wxVariantData* data) ;
+
+ // make a 'clone' of the object
+ void Ref(const wxVariantBase& clone);
+
+ // destroy a reference
+ void UnRef();
+
+ // Make NULL (i.e. delete the data)
+ void MakeNull();
+
+ // write contents to a string (e.g. for debugging)
+ wxString MakeString() const;
+
+ // Delete data and name
+ void Clear();
+
+ // Returns a string representing the type of the variant,
+ // e.g. "string", "bool", "stringlist", "list", "double", "long"
+ wxString GetType() const;
+
+ bool IsType(const wxString& type) const;
+ bool IsValueKindOf(const wxClassInfo* type) const;
+
+ // FIXME wxXTI methods:
+
+ // get the typeinfo of the stored object
+ const wxTypeInfo* GetTypeInfo() const
+ {
+ if (!m_data)
+ return NULL;
+ return m_data->GetTypeInfo();
+ }
+
+ // get a ref to the stored data
+ template<typename T> T& Get(wxTEMPLATED_MEMBER_FIX(T))
+ {
+ wxVariantDataT<T> *dataptr =
+ wx_dynamic_cast(wxVariantDataT<T>*, m_data);
+ wxASSERT_MSG( dataptr,
+ wxString::Format(wxT("Cast to %s not possible"), typeid(T).name()) );
+ return dataptr->Get();
+ }
+
+ // get a const ref to the stored data
+ template<typename T> const T& Get(wxTEMPLATED_MEMBER_FIX(T)) const
+ {
+ const wxVariantDataT<T> *dataptr =
+ wx_dynamic_cast(const wxVariantDataT<T>*, m_data);
+ wxASSERT_MSG( dataptr,
+ wxString::Format(wxT("Cast to %s not possible"), typeid(T).name()) );
+ return dataptr->Get();
+ }
+
+ template<typename T> bool HasData(wxTEMPLATED_MEMBER_FIX(T)) const
+ {
+ const wxVariantDataT<T> *dataptr =
+ wx_dynamic_cast(const wxVariantDataT<T>*, m_data);
+ return dataptr != NULL;
+ }
+
+ // returns this value as string
+ wxString GetAsString() const;
+
+ // gets the stored data casted to a wxObject*,
+ // returning NULL if cast is not possible
+ wxObject* GetAsObject();
+
+protected:
+ wxVariantData* m_data;
+ wxString m_name;
+};
+
+#include "wx/dynarray.h"
+WX_DECLARE_OBJARRAY_WITH_DECL(wxVariantBase, wxVariantBaseArray, class WXDLLIMPEXP_BASE);
+
+
+// templated streaming, every type must have their specialization for these methods
+
+template<typename T>
+void wxStringReadValue( const wxString &s, T &data );
+
+template<typename T>
+void wxStringWriteValue( wxString &s, const T &data);
+
+template<typename T>
+void wxToStringConverter( const wxVariantBase &v, wxString &s wxTEMPLATED_FUNCTION_FIX(T)) \
+ { wxStringWriteValue( s, v.wxTEMPLATED_MEMBER_CALL(Get, T) ); }
+
+template<typename T>
+void wxFromStringConverter( const wxString &s, wxVariantBase &v wxTEMPLATED_FUNCTION_FIX(T)) \
+ { T d; wxStringReadValue( s, d ); v = wxVariantBase(d); }
+
+
+#endif // wxUSE_VARIANT
+#endif // _WX_VARIANTBASE_H_
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: wx/xtictor.h\r
-// Purpose: XTI constructors\r
-// Author: Stefan Csomor\r
-// Modified by: Francesco Montorsi\r
-// Created: 27/07/03\r
-// RCS-ID: $Id: xti.h 47299 2007-07-10 15:58:27Z FM $\r
-// Copyright: (c) 1997 Julian Smart\r
-// (c) 2003 Stefan Csomor\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-#ifndef _XTICTOR_H_\r
-#define _XTICTOR_H_\r
-\r
-#include "wx/defs.h"\r
-\r
-#if wxUSE_EXTENDED_RTTI\r
-\r
-#include "wx/string.h"\r
-#include "wx/variant.h"\r
-\r
-class WXDLLIMPEXP_BASE wxObject;\r
-class WXDLLIMPEXP_BASE wxClassInfo;\r
-class WXDLLIMPEXP_BASE wxDynamicClassInfo;\r
-class WXDLLIMPEXP_BASE wxHashTable;\r
-class WXDLLIMPEXP_BASE wxHashTable_Node;\r
-class WXDLLIMPEXP_BASE wxObjectRefData;\r
-class WXDLLIMPEXP_BASE wxEvent;\r
-class WXDLLIMPEXP_BASE wxEvtHandler;\r
-\r
-// ----------------------------------------------------------------------------\r
-// Constructor Bridges\r
-// ----------------------------------------------------------------------------\r
-\r
-// A constructor bridge allows to call a ctor with an arbitrary number\r
-// or parameters during runtime\r
-class WXDLLIMPEXP_BASE wxObjectAllocatorAndCreator\r
-{\r
-public:\r
- virtual ~wxObjectAllocatorAndCreator() { }\r
- virtual bool Create(wxObject * &o, wxVariantBase *args) = 0;\r
-};\r
-\r
-// a direct constructor bridge calls the operator new for this class and\r
-// passes all params to the constructor. Needed for classes that cannot be\r
-// instantiated using alloc-create semantics\r
-class WXDLLIMPEXP_BASE wxObjectAllocator : public wxObjectAllocatorAndCreator\r
-{\r
-public:\r
- virtual bool Create(wxObject * &o, wxVariantBase *args) = 0;\r
-};\r
-\r
-\r
-// ----------------------------------------------------------------------------\r
-// Constructor Bridges for all Numbers of Params\r
-// ----------------------------------------------------------------------------\r
-\r
-// no params\r
-\r
-template<typename Class>\r
-struct wxObjectAllocatorAndCreator_0 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create();\r
- }\r
-};\r
-\r
-struct wxObjectAllocatorAndCreator_Dummy : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject *&, wxVariantBase *)\r
- {\r
- return true;\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_0(klass) \\r
- wxObjectAllocatorAndCreator_0<klass> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { NULL }; \\r
- const int klass::ms_constructorPropertiesCount = 0;\r
-\r
-#define wxCONSTRUCTOR_DUMMY(klass) \\r
- wxObjectAllocatorAndCreator_Dummy constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { NULL }; \\r
- const int klass::ms_constructorPropertiesCount = 0;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class>\r
-struct wxDirectConstructorBridge_0 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class( );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_0(klass) \\r
- wxDirectConstructorBridge_0<klass> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { NULL }; \\r
- const int klass::ms_constructorPropertiesCount = 0;\r
-\r
-\r
-// 1 param\r
-\r
-template<typename Class, typename T0>\r
-struct wxObjectAllocatorAndCreator_1 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_1(klass,t0,v0) \\r
- wxObjectAllocatorAndCreator_1<klass,t0> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) }; \\r
- const int klass::ms_constructorPropertiesCount = 1;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class, typename T0>\r
-struct wxDirectConstructorBridge_1 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_1(klass,t0,v0) \\r
- wxDirectConstructorBridge_1<klass,t0,t1> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) }; \\r
- const int klass::ms_constructorPropertiesCount = 1;\r
-\r
-\r
-// 2 params\r
-\r
-template<typename Class,\r
-typename T0, typename T1>\r
-struct wxObjectAllocatorAndCreator_2 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_2(klass,t0,v0,t1,v1) \\r
- wxObjectAllocatorAndCreator_2<klass,t0,t1> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1) }; \\r
- const int klass::ms_constructorPropertiesCount = 2;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class,\r
-typename T0, typename T1>\r
-struct wxDirectConstructorBridge_2 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_2(klass,t0,v0,t1,v1) \\r
- wxDirectConstructorBridge_2<klass,t0,t1> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1) }; \\r
- const int klass::ms_constructorPropertiesCount = 2;\r
-\r
-\r
-// 3 params\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2>\r
-struct wxObjectAllocatorAndCreator_3 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \\r
- wxObjectAllocatorAndCreator_3<klass,t0,t1,t2> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), wxT(#v2) }; \\r
- const int klass::ms_constructorPropertiesCount = 3;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2>\r
-struct wxDirectConstructorBridge_3 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \\r
- wxDirectConstructorBridge_3<klass,t0,t1,t2> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), wxT(#v2) }; \\r
- const int klass::ms_constructorPropertiesCount = 3;\r
-\r
-\r
-// 4 params\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3>\r
-struct wxObjectAllocatorAndCreator_4 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_4(klass,t0,v0,t1,v1,t2,v2,t3,v3) \\r
- wxObjectAllocatorAndCreator_4<klass,t0,t1,t2,t3> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3) }; \\r
- const int klass::ms_constructorPropertiesCount = 4;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3>\r
-struct wxDirectConstructorBridge_4 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_4(klass,t0,v0,t1,v1,t2,v2,t3,v3) \\r
- wxDirectConstructorBridge_4<klass,t0,t1,t2,t3> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3) }; \\r
- const int klass::ms_constructorPropertiesCount = 4;\r
-\r
-\r
-// 5 params\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4>\r
-struct wxObjectAllocatorAndCreator_5 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_5(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4) \\r
- wxObjectAllocatorAndCreator_5<klass,t0,t1,t2,t3,t4> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4) }; \\r
- const int klass::ms_constructorPropertiesCount = 5;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4>\r
-struct wxDirectConstructorBridge_5 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_5(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4) \\r
- wxDirectConstructorBridge_5<klass,t0,t1,t2,t3,t4> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4) }; \\r
- const int klass::ms_constructorPropertiesCount = 5;\r
-\r
-\r
-// 6 params\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>\r
-struct wxObjectAllocatorAndCreator_6 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),\r
- args[5].wxTEMPLATED_MEMBER_CALL(Get, T5)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \\r
- wxObjectAllocatorAndCreator_6<klass,t0,t1,t2,t3,t4,t5> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5) }; \\r
- const int klass::ms_constructorPropertiesCount = 6;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>\r
-struct wxDirectConstructorBridge_6 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),\r
- args[5].wxTEMPLATED_MEMBER_CALL(Get, T5)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \\r
- wxDirectConstructorBridge_6<klass,t0,t1,t2,t3,t4,t5> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), \\r
- wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5) }; \\r
- const int klass::ms_constructorPropertiesCount = 6;\r
-\r
-\r
-// 7 params\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>\r
-struct wxObjectAllocatorAndCreator_7 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),\r
- args[5].wxTEMPLATED_MEMBER_CALL(Get, T5),\r
- args[6].wxTEMPLATED_MEMBER_CALL(Get, T6)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_7(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6) \\r
- wxObjectAllocatorAndCreator_7<klass,t0,t1,t2,t3,t4,t5,t6> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), \\r
- wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6) }; \\r
- const int klass::ms_constructorPropertiesCount = 7;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>\r
-struct wxDirectConstructorBridge_7 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T5),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T6)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_7(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6) \\r
- wxDirectConstructorBridge_7<klass,t0,t1,t2,t3,t4,t5,t6> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6) }; \\r
- const int klass::ms_constructorPropertiesCount = 7;\r
-\r
-\r
-// 8 params\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, \\r
-typename T6, typename T7>\r
-struct wxObjectAllocatorAndCreator_8 : public wxObjectAllocatorAndCreator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- Class *obj = wx_dynamic_cast(Class*, o);\r
- return obj->Create(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),\r
- args[5].wxTEMPLATED_MEMBER_CALL(Get, T5),\r
- args[6].wxTEMPLATED_MEMBER_CALL(Get, T6),\r
- args[7].wxTEMPLATED_MEMBER_CALL(Get, T7)\r
- );\r
- }\r
-};\r
-\r
-#define wxCONSTRUCTOR_8(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6,t7,v7) \\r
- wxObjectAllocatorAndCreator_8<klass,t0,t1,t2,t3,t4,t5,t6,t7> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6), wxT(#v7) }; \\r
- const int klass::ms_constructorPropertiesCount = 8;\r
-\r
-// direct constructor version\r
-\r
-template<typename Class,\r
-typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, \\r
-typename T6, typename T7>\r
-struct wxDirectConstructorBridge_8 : public wxObjectAllocator\r
-{\r
- bool Create(wxObject * &o, wxVariantBase *args)\r
- {\r
- o = new Class(\r
- args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),\r
- args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),\r
- args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),\r
- args[3].wxTEMPLATED_MEMBER_CALL(Get, T5),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T6),\r
- args[4].wxTEMPLATED_MEMBER_CALL(Get, T7)\r
- );\r
- return o != NULL;\r
- }\r
-};\r
-\r
-#define wxDIRECT_CONSTRUCTOR_8(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6,t7,v7) \\r
- wxDirectConstructorBridge_8<klass,t0,t1,t2,t3,t4,t5,t6,t7> constructor##klass; \\r
- wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \\r
- const wxChar *klass::ms_constructorProperties[] = \\r
- { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6), wxT(#v7) }; \\r
- const int klass::ms_constructorPropertiesCount = 8;\r
-\r
-#endif // wxUSE_EXTENDED_RTTI\r
-#endif // _XTICTOR_H_\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/xtictor.h
+// Purpose: XTI constructors
+// Author: Stefan Csomor
+// Modified by: Francesco Montorsi
+// Created: 27/07/03
+// RCS-ID: $Id$
+// Copyright: (c) 1997 Julian Smart
+// (c) 2003 Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _XTICTOR_H_
+#define _XTICTOR_H_
+
+#include "wx/defs.h"
+
+#if wxUSE_EXTENDED_RTTI
+
+#include "wx/string.h"
+#include "wx/variant.h"
+
+class WXDLLIMPEXP_BASE wxObject;
+class WXDLLIMPEXP_BASE wxClassInfo;
+class WXDLLIMPEXP_BASE wxDynamicClassInfo;
+class WXDLLIMPEXP_BASE wxHashTable;
+class WXDLLIMPEXP_BASE wxHashTable_Node;
+class WXDLLIMPEXP_BASE wxObjectRefData;
+class WXDLLIMPEXP_BASE wxEvent;
+class WXDLLIMPEXP_BASE wxEvtHandler;
+
+// ----------------------------------------------------------------------------
+// Constructor Bridges
+// ----------------------------------------------------------------------------
+
+// A constructor bridge allows to call a ctor with an arbitrary number
+// or parameters during runtime
+class WXDLLIMPEXP_BASE wxObjectAllocatorAndCreator
+{
+public:
+ virtual ~wxObjectAllocatorAndCreator() { }
+ virtual bool Create(wxObject * &o, wxVariantBase *args) = 0;
+};
+
+// a direct constructor bridge calls the operator new for this class and
+// passes all params to the constructor. Needed for classes that cannot be
+// instantiated using alloc-create semantics
+class WXDLLIMPEXP_BASE wxObjectAllocator : public wxObjectAllocatorAndCreator
+{
+public:
+ virtual bool Create(wxObject * &o, wxVariantBase *args) = 0;
+};
+
+
+// ----------------------------------------------------------------------------
+// Constructor Bridges for all Numbers of Params
+// ----------------------------------------------------------------------------
+
+// no params
+
+template<typename Class>
+struct wxObjectAllocatorAndCreator_0 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create();
+ }
+};
+
+struct wxObjectAllocatorAndCreator_Dummy : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject *&, wxVariantBase *)
+ {
+ return true;
+ }
+};
+
+#define wxCONSTRUCTOR_0(klass) \
+ wxObjectAllocatorAndCreator_0<klass> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { NULL }; \
+ const int klass::ms_constructorPropertiesCount = 0;
+
+#define wxCONSTRUCTOR_DUMMY(klass) \
+ wxObjectAllocatorAndCreator_Dummy constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { NULL }; \
+ const int klass::ms_constructorPropertiesCount = 0;
+
+// direct constructor version
+
+template<typename Class>
+struct wxDirectConstructorBridge_0 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class( );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_0(klass) \
+ wxDirectConstructorBridge_0<klass> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { NULL }; \
+ const int klass::ms_constructorPropertiesCount = 0;
+
+
+// 1 param
+
+template<typename Class, typename T0>
+struct wxObjectAllocatorAndCreator_1 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_1(klass,t0,v0) \
+ wxObjectAllocatorAndCreator_1<klass,t0> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) }; \
+ const int klass::ms_constructorPropertiesCount = 1;
+
+// direct constructor version
+
+template<typename Class, typename T0>
+struct wxDirectConstructorBridge_1 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_1(klass,t0,v0) \
+ wxDirectConstructorBridge_1<klass,t0,t1> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0) }; \
+ const int klass::ms_constructorPropertiesCount = 1;
+
+
+// 2 params
+
+template<typename Class,
+typename T0, typename T1>
+struct wxObjectAllocatorAndCreator_2 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_2(klass,t0,v0,t1,v1) \
+ wxObjectAllocatorAndCreator_2<klass,t0,t1> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1) }; \
+ const int klass::ms_constructorPropertiesCount = 2;
+
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1>
+struct wxDirectConstructorBridge_2 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_2(klass,t0,v0,t1,v1) \
+ wxDirectConstructorBridge_2<klass,t0,t1> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1) }; \
+ const int klass::ms_constructorPropertiesCount = 2;
+
+
+// 3 params
+
+template<typename Class,
+typename T0, typename T1, typename T2>
+struct wxObjectAllocatorAndCreator_3 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \
+ wxObjectAllocatorAndCreator_3<klass,t0,t1,t2> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), wxT(#v2) }; \
+ const int klass::ms_constructorPropertiesCount = 3;
+
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1, typename T2>
+struct wxDirectConstructorBridge_3 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \
+ wxDirectConstructorBridge_3<klass,t0,t1,t2> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), wxT(#v2) }; \
+ const int klass::ms_constructorPropertiesCount = 3;
+
+
+// 4 params
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3>
+struct wxObjectAllocatorAndCreator_4 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_4(klass,t0,v0,t1,v1,t2,v2,t3,v3) \
+ wxObjectAllocatorAndCreator_4<klass,t0,t1,t2,t3> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3) }; \
+ const int klass::ms_constructorPropertiesCount = 4;
+
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3>
+struct wxDirectConstructorBridge_4 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_4(klass,t0,v0,t1,v1,t2,v2,t3,v3) \
+ wxDirectConstructorBridge_4<klass,t0,t1,t2,t3> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3) }; \
+ const int klass::ms_constructorPropertiesCount = 4;
+
+
+// 5 params
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4>
+struct wxObjectAllocatorAndCreator_5 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_5(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4) \
+ wxObjectAllocatorAndCreator_5<klass,t0,t1,t2,t3,t4> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4) }; \
+ const int klass::ms_constructorPropertiesCount = 5;
+
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4>
+struct wxDirectConstructorBridge_5 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_5(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4) \
+ wxDirectConstructorBridge_5<klass,t0,t1,t2,t3,t4> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4) }; \
+ const int klass::ms_constructorPropertiesCount = 5;
+
+
+// 6 params
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
+struct wxObjectAllocatorAndCreator_6 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),
+ args[5].wxTEMPLATED_MEMBER_CALL(Get, T5)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \
+ wxObjectAllocatorAndCreator_6<klass,t0,t1,t2,t3,t4,t5> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5) }; \
+ const int klass::ms_constructorPropertiesCount = 6;
+
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
+struct wxDirectConstructorBridge_6 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),
+ args[5].wxTEMPLATED_MEMBER_CALL(Get, T5)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \
+ wxDirectConstructorBridge_6<klass,t0,t1,t2,t3,t4,t5> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), \
+ wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5) }; \
+ const int klass::ms_constructorPropertiesCount = 6;
+
+
+// 7 params
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
+struct wxObjectAllocatorAndCreator_7 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),
+ args[5].wxTEMPLATED_MEMBER_CALL(Get, T5),
+ args[6].wxTEMPLATED_MEMBER_CALL(Get, T6)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_7(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6) \
+ wxObjectAllocatorAndCreator_7<klass,t0,t1,t2,t3,t4,t5,t6> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = { wxT(#v0), wxT(#v1), \
+ wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6) }; \
+ const int klass::ms_constructorPropertiesCount = 7;
+
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
+struct wxDirectConstructorBridge_7 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T5),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T6)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_7(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6) \
+ wxDirectConstructorBridge_7<klass,t0,t1,t2,t3,t4,t5,t6> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6) }; \
+ const int klass::ms_constructorPropertiesCount = 7;
+
+
+// 8 params
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, \
+typename T6, typename T7>
+struct wxObjectAllocatorAndCreator_8 : public wxObjectAllocatorAndCreator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ Class *obj = wx_dynamic_cast(Class*, o);
+ return obj->Create(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),
+ args[5].wxTEMPLATED_MEMBER_CALL(Get, T5),
+ args[6].wxTEMPLATED_MEMBER_CALL(Get, T6),
+ args[7].wxTEMPLATED_MEMBER_CALL(Get, T7)
+ );
+ }
+};
+
+#define wxCONSTRUCTOR_8(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6,t7,v7) \
+ wxObjectAllocatorAndCreator_8<klass,t0,t1,t2,t3,t4,t5,t6,t7> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6), wxT(#v7) }; \
+ const int klass::ms_constructorPropertiesCount = 8;
+
+// direct constructor version
+
+template<typename Class,
+typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, \
+typename T6, typename T7>
+struct wxDirectConstructorBridge_8 : public wxObjectAllocator
+{
+ bool Create(wxObject * &o, wxVariantBase *args)
+ {
+ o = new Class(
+ args[0].wxTEMPLATED_MEMBER_CALL(Get, T0),
+ args[1].wxTEMPLATED_MEMBER_CALL(Get, T1),
+ args[2].wxTEMPLATED_MEMBER_CALL(Get, T2),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T3),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T4),
+ args[3].wxTEMPLATED_MEMBER_CALL(Get, T5),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T6),
+ args[4].wxTEMPLATED_MEMBER_CALL(Get, T7)
+ );
+ return o != NULL;
+ }
+};
+
+#define wxDIRECT_CONSTRUCTOR_8(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6,t7,v7) \
+ wxDirectConstructorBridge_8<klass,t0,t1,t2,t3,t4,t5,t6,t7> constructor##klass; \
+ wxObjectAllocatorAndCreator* klass::ms_constructor = &constructor##klass; \
+ const wxChar *klass::ms_constructorProperties[] = \
+ { wxT(#v0), wxT(#v1), wxT(#v2), wxT(#v3), wxT(#v4), wxT(#v5), wxT(#v6), wxT(#v7) }; \
+ const int klass::ms_constructorPropertiesCount = 8;
+
+#endif // wxUSE_EXTENDED_RTTI
+#endif // _XTICTOR_H_
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: wx/xtihandler.h\r
-// Purpose: XTI handlers\r
-// Author: Stefan Csomor\r
-// Modified by: Francesco Montorsi\r
-// Created: 27/07/03\r
-// RCS-ID: $Id: xti.h 47299 2007-07-10 15:58:27Z FM $\r
-// Copyright: (c) 1997 Julian Smart\r
-// (c) 2003 Stefan Csomor\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-#ifndef _XTIHANDLER_H_\r
-#define _XTIHANDLER_H_\r
-\r
-#include "wx/defs.h"\r
-\r
-#if wxUSE_EXTENDED_RTTI\r
-\r
-#include "wx/string.h"\r
-\r
-class WXDLLIMPEXP_BASE wxObject;\r
-class WXDLLIMPEXP_BASE wxClassInfo;\r
-class WXDLLIMPEXP_BASE wxDynamicClassInfo;\r
-class WXDLLIMPEXP_BASE wxHashTable;\r
-class WXDLLIMPEXP_BASE wxHashTable_Node;\r
-class WXDLLIMPEXP_BASE wxObjectRefData;\r
-class WXDLLIMPEXP_BASE wxEvent;\r
-class WXDLLIMPEXP_BASE wxEvtHandler;\r
-\r
-typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);\r
-\r
-// ----------------------------------------------------------------------------\r
-// Handler Info\r
-//\r
-// this describes an event sink\r
-// ----------------------------------------------------------------------------\r
-\r
-class WXDLLIMPEXP_BASE wxHandlerInfo\r
-{\r
- friend class WXDLLIMPEXP_BASE wxDynamicClassInfo;\r
-\r
-public:\r
- wxHandlerInfo(wxHandlerInfo* &iter,\r
- wxClassInfo* itsClass,\r
- const wxString& name,\r
- wxObjectEventFunction address,\r
- const wxClassInfo* eventClassInfo) :\r
- m_eventFunction(address),\r
- m_name(name),\r
- m_eventClassInfo(eventClassInfo),\r
- m_itsClass(itsClass)\r
- {\r
- Insert(iter);\r
- }\r
-\r
- ~wxHandlerInfo()\r
- { Remove(); }\r
-\r
- // return the name of this handler\r
- const wxString& GetName() const { return m_name; }\r
-\r
- // return the class info of the event\r
- const wxClassInfo *GetEventClassInfo() const { return m_eventClassInfo; }\r
-\r
- // get the handler function pointer\r
- wxObjectEventFunction GetEventFunction() const { return m_eventFunction; }\r
-\r
- // returns NULL if this is the last handler of this class\r
- wxHandlerInfo* GetNext() const { return m_next; }\r
-\r
- // return the class this property is declared in\r
- const wxClassInfo* GetDeclaringClass() const { return m_itsClass; }\r
-\r
-private:\r
-\r
- // inserts this handler at the end of the linked chain which begins\r
- // with "iter" handler.\r
- void Insert(wxHandlerInfo* &iter);\r
-\r
- // removes this handler from the linked chain of the m_itsClass handlers.\r
- void Remove();\r
-\r
- wxObjectEventFunction m_eventFunction;\r
- wxString m_name;\r
- const wxClassInfo* m_eventClassInfo;\r
- wxHandlerInfo* m_next;\r
- wxClassInfo* m_itsClass;\r
-};\r
-\r
-#define wxHANDLER(name,eventClassType) \\r
- static wxHandlerInfo _handlerInfo##name( first, class_t::GetClassInfoStatic(), \\r
- wxT(#name), (wxObjectEventFunction) (wxEventFunction) &name, \\r
- CLASSINFO( eventClassType ) );\r
-\r
-#define wxBEGIN_HANDLERS_TABLE(theClass) \\r
- wxHandlerInfo *theClass::GetHandlersStatic() \\r
- { \\r
- typedef theClass class_t; \\r
- static wxHandlerInfo* first = NULL;\r
-\r
-#define wxEND_HANDLERS_TABLE() \\r
- return first; }\r
-\r
-#define wxEMPTY_HANDLERS_TABLE(theClass) \\r
- wxBEGIN_HANDLERS_TABLE(theClass) \\r
- wxEND_HANDLERS_TABLE()\r
-\r
-#endif // wxUSE_EXTENDED_RTTI\r
-#endif // _XTIHANDLER_H_\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/xtihandler.h
+// Purpose: XTI handlers
+// Author: Stefan Csomor
+// Modified by: Francesco Montorsi
+// Created: 27/07/03
+// RCS-ID: $Id$
+// Copyright: (c) 1997 Julian Smart
+// (c) 2003 Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _XTIHANDLER_H_
+#define _XTIHANDLER_H_
+
+#include "wx/defs.h"
+
+#if wxUSE_EXTENDED_RTTI
+
+#include "wx/string.h"
+
+class WXDLLIMPEXP_BASE wxObject;
+class WXDLLIMPEXP_BASE wxClassInfo;
+class WXDLLIMPEXP_BASE wxDynamicClassInfo;
+class WXDLLIMPEXP_BASE wxHashTable;
+class WXDLLIMPEXP_BASE wxHashTable_Node;
+class WXDLLIMPEXP_BASE wxObjectRefData;
+class WXDLLIMPEXP_BASE wxEvent;
+class WXDLLIMPEXP_BASE wxEvtHandler;
+
+typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);
+
+// ----------------------------------------------------------------------------
+// Handler Info
+//
+// this describes an event sink
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxHandlerInfo
+{
+ friend class WXDLLIMPEXP_BASE wxDynamicClassInfo;
+
+public:
+ wxHandlerInfo(wxHandlerInfo* &iter,
+ wxClassInfo* itsClass,
+ const wxString& name,
+ wxObjectEventFunction address,
+ const wxClassInfo* eventClassInfo) :
+ m_eventFunction(address),
+ m_name(name),
+ m_eventClassInfo(eventClassInfo),
+ m_itsClass(itsClass)
+ {
+ Insert(iter);
+ }
+
+ ~wxHandlerInfo()
+ { Remove(); }
+
+ // return the name of this handler
+ const wxString& GetName() const { return m_name; }
+
+ // return the class info of the event
+ const wxClassInfo *GetEventClassInfo() const { return m_eventClassInfo; }
+
+ // get the handler function pointer
+ wxObjectEventFunction GetEventFunction() const { return m_eventFunction; }
+
+ // returns NULL if this is the last handler of this class
+ wxHandlerInfo* GetNext() const { return m_next; }
+
+ // return the class this property is declared in
+ const wxClassInfo* GetDeclaringClass() const { return m_itsClass; }
+
+private:
+
+ // inserts this handler at the end of the linked chain which begins
+ // with "iter" handler.
+ void Insert(wxHandlerInfo* &iter);
+
+ // removes this handler from the linked chain of the m_itsClass handlers.
+ void Remove();
+
+ wxObjectEventFunction m_eventFunction;
+ wxString m_name;
+ const wxClassInfo* m_eventClassInfo;
+ wxHandlerInfo* m_next;
+ wxClassInfo* m_itsClass;
+};
+
+#define wxHANDLER(name,eventClassType) \
+ static wxHandlerInfo _handlerInfo##name( first, class_t::GetClassInfoStatic(), \
+ wxT(#name), (wxObjectEventFunction) (wxEventFunction) &name, \
+ CLASSINFO( eventClassType ) );
+
+#define wxBEGIN_HANDLERS_TABLE(theClass) \
+ wxHandlerInfo *theClass::GetHandlersStatic() \
+ { \
+ typedef theClass class_t; \
+ static wxHandlerInfo* first = NULL;
+
+#define wxEND_HANDLERS_TABLE() \
+ return first; }
+
+#define wxEMPTY_HANDLERS_TABLE(theClass) \
+ wxBEGIN_HANDLERS_TABLE(theClass) \
+ wxEND_HANDLERS_TABLE()
+
+#endif // wxUSE_EXTENDED_RTTI
+#endif // _XTIHANDLER_H_
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: wx/xtiprop.h\r
-// Purpose: XTI properties\r
-// Author: Stefan Csomor\r
-// Modified by: Francesco Montorsi\r
-// Created: 27/07/03\r
-// RCS-ID: $Id: xti.h 47299 2007-07-10 15:58:27Z FM $\r
-// Copyright: (c) 1997 Julian Smart\r
-// (c) 2003 Stefan Csomor\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-#ifndef _XTIPROP_H_\r
-#define _XTIPROP_H_\r
-\r
-#include "wx/defs.h"\r
-\r
-#if wxUSE_EXTENDED_RTTI\r
-\r
-#include "wx/string.h"\r
-#include "wx/variant.h"\r
-#include "wx/intl.h"\r
-#include "wx/log.h"\r
-#include "wx/xtitypes.h"\r
-\r
-class WXDLLIMPEXP_BASE wxObject;\r
-class WXDLLIMPEXP_BASE wxClassInfo;\r
-class WXDLLIMPEXP_BASE wxDynamicClassInfo;\r
-class WXDLLIMPEXP_BASE wxHashTable;\r
-class WXDLLIMPEXP_BASE wxHashTable_Node;\r
-class WXDLLIMPEXP_BASE wxObjectRefData;\r
-class WXDLLIMPEXP_BASE wxEvent;\r
-class WXDLLIMPEXP_BASE wxEvtHandler;\r
-\r
-// ----------------------------------------------------------------------------\r
-// Property Accessors\r
-//\r
-// wxPropertySetter/Getter/CollectionGetter/CollectionAdder are all property\r
-// accessors which are managed by wxPropertyAccessor class which in turn is\r
-// handled by wxPropertyInfo.\r
-// ----------------------------------------------------------------------------\r
-\r
-class WXDLLIMPEXP_BASE wxPropertySetter\r
-{\r
-public:\r
- wxPropertySetter( const wxString name ) { m_name = name; }\r
- virtual ~wxPropertySetter() {}\r
-\r
- virtual void Set( wxObject *object, const wxVariantBase &variantValue ) const = 0;\r
- const wxString& GetName() const { return m_name; }\r
-\r
-private:\r
- wxString m_name;\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxPropertyGetter\r
-{\r
-public:\r
- wxPropertyGetter( const wxString name ) { m_name = name; }\r
- virtual ~wxPropertyGetter() {}\r
-\r
- virtual void Get( const wxObject *object, wxVariantBase& result) const = 0;\r
- const wxString& GetName() const { return m_name; }\r
-\r
-private:\r
- wxString m_name;\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxPropertyCollectionGetter\r
-{\r
-public:\r
- wxPropertyCollectionGetter( const wxString name ) { m_name = name; }\r
- virtual ~wxPropertyCollectionGetter() {}\r
-\r
- virtual void Get( const wxObject *object, wxVariantBaseArray& result) const = 0;\r
- const wxString& GetName() const { return m_name; }\r
-\r
-private:\r
- wxString m_name;\r
-};\r
-\r
-template<typename coll_t> void WXDLLIMPEXP_BASE \\r
- wxCollectionToVariantArray( const coll_t& coll, wxVariantBaseArray& result );\r
-\r
-class WXDLLIMPEXP_BASE wxPropertyCollectionAdder\r
-{\r
-public:\r
- wxPropertyCollectionAdder( const wxString name ) { m_name = name; }\r
- virtual ~wxPropertyCollectionAdder() {}\r
-\r
- virtual void Add( wxObject *object, const wxVariantBase &variantValue ) const= 0;\r
- const wxString& GetName() const { return m_name; }\r
-\r
-private:\r
- wxString m_name;\r
-};\r
-\r
-#define wxPROPERTY_SETTER( property, Klass, valueType, setterMethod ) \\r
-class wxPropertySetter##property : public wxPropertySetter \\r
-{ \\r
-public: \\r
- wxINFUNC_CLASS_TYPE_FIX(Klass) \\r
- wxPropertySetter##property() : wxPropertySetter( wxT(#setterMethod) ) {} \\r
- virtual ~wxPropertySetter##property() {} \\r
- \\r
- void Set( wxObject *object, const wxVariantBase &variantValue ) const \\r
- { \\r
- Klass *obj = dynamic_cast<Klass*>(object); \\r
- if ( variantValue.wxTEMPLATED_MEMBER_CALL(HasData, valueType) ) \\r
- obj->setterMethod(variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType)); \\r
- else \\r
- obj->setterMethod(*variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType*)); \\r
- } \\r
-};\r
-\r
-#define wxPROPERTY_GETTER( property, Klass, valueType, gettermethod ) \\r
-class wxPropertyGetter##property : public wxPropertyGetter \\r
-{ \\r
-public: \\r
- wxINFUNC_CLASS_TYPE_FIX(Klass) \\r
- wxPropertyGetter##property() : wxPropertyGetter( wxT(#gettermethod) ) {} \\r
- virtual ~wxPropertyGetter##property() {} \\r
- \\r
- void Get( const wxObject *object, wxVariantBase &result) const \\r
- { \\r
- const Klass *obj = dynamic_cast<const Klass*>(object); \\r
- result = wxVariantBase( obj->gettermethod() ); \\r
- } \\r
-};\r
-\r
-#define wxPROPERTY_COLLECTION_ADDER( property, Klass, valueType, addermethod ) \\r
-class wxPropertyCollectionAdder##property : public wxPropertyCollectionAdder \\r
-{ \\r
-public: \\r
- wxINFUNC_CLASS_TYPE_FIX(Klass) \\r
- wxPropertyCollectionAdder##property() : wxPropertyCollectionAdder( wxT(#addermethod) ) {} \\r
- virtual ~wxPropertyCollectionAdder##property() {} \\r
- \\r
- void Add( wxObject *object, const wxVariantBase &variantValue ) const \\r
- { \\r
- Klass *obj = dynamic_cast<Klass*>(object); \\r
- if ( variantValue.wxTEMPLATED_MEMBER_CALL(HasData, valueType) ) \\r
- obj->addermethod(variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType)); \\r
- else \\r
- obj->addermethod(*variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType*)); \\r
- } \\r
-};\r
-\r
-#define wxPROPERTY_COLLECTION_GETTER( property, Klass, valueType, gettermethod ) \\r
-class wxPropertyCollectionGetter##property : public wxPropertyCollectionGetter \\r
-{ \\r
-public: \\r
- wxINFUNC_CLASS_TYPE_FIX(Klass) \\r
- wxPropertyCollectionGetter##property() : wxPropertyCollectionGetter( wxT(#gettermethod) ) {} \\r
- virtual ~wxPropertyCollectionGetter##property() {} \\r
- \\r
- void Get( const wxObject *object, wxVariantBaseArray &result) const \\r
- { \\r
- const Klass *obj = dynamic_cast<const Klass*>(object); \\r
- wxCollectionToVariantArray( obj->gettermethod(), result ); \\r
- } \\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxPropertyAccessor\r
-{\r
-public:\r
- wxPropertyAccessor( wxPropertySetter *setter, wxPropertyGetter *getter, \r
- wxPropertyCollectionAdder *adder, wxPropertyCollectionGetter *collectionGetter )\r
- { m_setter = setter; m_getter = getter; m_adder = adder; \r
- m_collectionGetter = collectionGetter; }\r
-\r
- virtual ~wxPropertyAccessor() {}\r
-\r
- // Setting a simple property (non-collection)\r
- virtual void SetProperty(wxObject *object, const wxVariantBase &value) const\r
- { \r
- if ( m_setter ) \r
- m_setter->Set( object, value ); \r
- else \r
- wxLogError( _("SetProperty called w/o valid setter") ); \r
- }\r
-\r
- // Getting a simple property (non-collection)\r
- virtual void GetProperty(const wxObject *object, wxVariantBase &result) const\r
- { \r
- if ( m_getter ) \r
- m_getter->Get( object, result ); \r
- else \r
- wxLogError( _("GetProperty called w/o valid getter") ); \r
- }\r
-\r
- // Adding an element to a collection property\r
- virtual void AddToPropertyCollection(wxObject *object, const wxVariantBase &value) const\r
- { \r
- if ( m_adder ) \r
- m_adder->Add( object, value ); \r
- else \r
- wxLogError( _("AddToPropertyCollection called w/o valid adder") ); \r
- }\r
-\r
- // Getting a collection property\r
- virtual void GetPropertyCollection( const wxObject *obj, wxVariantBaseArray &result) const\r
- { \r
- if ( m_collectionGetter ) \r
- m_collectionGetter->Get( obj, result); \r
- else \r
- wxLogError( _("GetPropertyCollection called w/o valid collection getter") ); \r
- }\r
-\r
- virtual bool HasSetter() const { return m_setter != NULL; }\r
- virtual bool HasCollectionGetter() const { return m_collectionGetter != NULL; }\r
- virtual bool HasGetter() const { return m_getter != NULL; }\r
- virtual bool HasAdder() const { return m_adder != NULL; }\r
-\r
- virtual const wxString& GetCollectionGetterName() const\r
- { return m_collectionGetter->GetName(); }\r
- virtual const wxString& GetGetterName() const\r
- { return m_getter->GetName(); }\r
- virtual const wxString& GetSetterName() const\r
- { return m_setter->GetName(); }\r
- virtual const wxString& GetAdderName() const\r
- { return m_adder->GetName(); }\r
-\r
-protected:\r
- wxPropertySetter *m_setter;\r
- wxPropertyCollectionAdder *m_adder;\r
- wxPropertyGetter *m_getter;\r
- wxPropertyCollectionGetter* m_collectionGetter;\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxGenericPropertyAccessor : public wxPropertyAccessor\r
-{\r
-public:\r
- wxGenericPropertyAccessor( const wxString &propName );\r
- virtual ~wxGenericPropertyAccessor();\r
-\r
- void RenameProperty( const wxString& WXUNUSED_UNLESS_DEBUG(oldName),\r
- const wxString& newName )\r
- {\r
- wxASSERT( oldName == m_propertyName ); m_propertyName = newName;\r
- }\r
-\r
- virtual bool HasSetter() const { return true; }\r
- virtual bool HasGetter() const { return true; }\r
- virtual bool HasAdder() const { return false; }\r
- virtual bool HasCollectionGetter() const { return false; }\r
-\r
- virtual const wxString& GetGetterName() const\r
- { return m_getterName; }\r
- virtual const wxString& GetSetterName() const\r
- { return m_setterName; }\r
-\r
- virtual void SetProperty(wxObject *object, const wxVariantBase &value) const;\r
- virtual void GetProperty(const wxObject *object, wxVariantBase &value) const;\r
-\r
- // Adding an element to a collection property\r
- virtual void AddToPropertyCollection(wxObject *WXUNUSED(object), \r
- const wxVariantBase &WXUNUSED(value)) const\r
- { \r
- wxLogError( _("AddToPropertyCollection called on a generic accessor") ); \r
- }\r
-\r
- // Getting a collection property\r
- virtual void GetPropertyCollection( const wxObject *WXUNUSED(obj), \r
- wxVariantBaseArray &WXUNUSED(result)) const\r
- { \r
- wxLogError ( _("GetPropertyCollection called on a generic accessor") ); \r
- }\r
-\r
-private:\r
- struct wxGenericPropertyAccessorInternal;\r
- wxGenericPropertyAccessorInternal* m_data;\r
- wxString m_propertyName;\r
- wxString m_setterName;\r
- wxString m_getterName;\r
-};\r
-\r
-typedef long wxPropertyInfoFlags;\r
-enum \r
-{\r
- // will be removed in future releases\r
- wxPROP_DEPRECATED = 0x00000001,\r
-\r
- // object graph property, will be streamed with priority (after constructor properties)\r
- wxPROP_OBJECT_GRAPH = 0x00000002,\r
-\r
- // this will only be streamed out and in as enum/set, the internal representation \r
- // is still a long\r
- wxPROP_ENUM_STORE_LONG = 0x00000004,\r
-\r
- // don't stream out this property, needed eg to avoid streaming out children \r
- // that are always created by their parents\r
- wxPROP_DONT_STREAM = 0x00000008\r
-};\r
-\r
-\r
-// ----------------------------------------------------------------------------\r
-// Property Support\r
-//\r
-// wxPropertyInfo is used to inquire of the property by name. It doesn't\r
-// provide access to the property, only information about it. If you\r
-// want access, look at wxPropertyAccessor.\r
-// ----------------------------------------------------------------------------\r
-\r
-class WXDLLIMPEXP_BASE wxPropertyInfo\r
-{\r
- friend class WXDLLIMPEXP_BASE wxDynamicClassInfo;\r
-\r
-public:\r
- wxPropertyInfo(wxPropertyInfo* &iter,\r
- wxClassInfo* itsClass,\r
- const wxString& name,\r
- const wxString& typeName,\r
- wxPropertyAccessor *accessor,\r
- wxVariantBase dv,\r
- wxPropertyInfoFlags flags = 0,\r
- const wxString& helpString = wxEmptyString,\r
- const wxString& groupString = wxEmptyString) :\r
- m_itsClass(itsClass),\r
- m_name(name),\r
- m_typeInfo(NULL),\r
- m_typeName(typeName),\r
- m_collectionElementTypeInfo(NULL),\r
- m_accessor(accessor),\r
- m_defaultValue(dv),\r
- m_flags(flags),\r
- m_helpString(helpString),\r
- m_groupString(groupString)\r
- {\r
- Insert(iter);\r
- }\r
-\r
-#if wxUSE_UNICODE\r
- wxPropertyInfo(wxPropertyInfo* &iter,\r
- wxClassInfo* itsClass,\r
- const wxString& name,\r
- const char* typeName,\r
- wxPropertyAccessor *accessor,\r
- wxVariantBase dv,\r
- wxPropertyInfoFlags flags = 0,\r
- const wxString& helpString = wxEmptyString,\r
- const wxString& groupString = wxEmptyString) :\r
- m_itsClass(itsClass),\r
- m_name(name),\r
- m_typeInfo(NULL),\r
- m_typeName(wxString::FromAscii(typeName)),\r
- m_collectionElementTypeInfo(NULL),\r
- m_accessor(accessor),\r
- m_defaultValue(dv),\r
- m_flags(flags),\r
- m_helpString(helpString),\r
- m_groupString(groupString)\r
- {\r
- Insert(iter);\r
- }\r
-#endif\r
- wxPropertyInfo(wxPropertyInfo* &iter,\r
- wxClassInfo* itsClass,\r
- const wxString& name,\r
- wxEventSourceTypeInfo* type,\r
- wxPropertyAccessor *accessor,\r
- wxVariantBase dv,\r
- wxPropertyInfoFlags flags = 0,\r
- const wxString& helpString = wxEmptyString,\r
- const wxString& groupString = wxEmptyString) :\r
- m_itsClass(itsClass),\r
- m_name(name),\r
- m_typeInfo(type),\r
- m_collectionElementTypeInfo(NULL),\r
- m_accessor(accessor),\r
- m_defaultValue(dv),\r
- m_flags(flags),\r
- m_helpString(helpString),\r
- m_groupString(groupString)\r
- {\r
- Insert(iter);\r
- }\r
-\r
- wxPropertyInfo(wxPropertyInfo* &iter,\r
- wxClassInfo* itsClass, const wxString& name,\r
- const wxString& collectionTypeName,\r
- const wxString& elementTypeName,\r
- wxPropertyAccessor *accessor,\r
- wxPropertyInfoFlags flags = 0,\r
- const wxString& helpString = wxEmptyString,\r
- const wxString& groupString = wxEmptyString) :\r
- m_itsClass(itsClass),\r
- m_name(name),\r
- m_typeInfo(NULL),\r
- m_typeName(collectionTypeName),\r
- m_collectionElementTypeInfo(NULL),\r
- m_collectionElementTypeName(elementTypeName),\r
- m_accessor(accessor),\r
- m_flags(flags),\r
- m_helpString(helpString),\r
- m_groupString(groupString)\r
- {\r
- Insert(iter);\r
- }\r
-\r
-#if wxUSE_UNICODE\r
- wxPropertyInfo(wxPropertyInfo* &iter,\r
- wxClassInfo* itsClass, const wxString& name,\r
- const char* collectionTypeName,\r
- const char* elementTypeName,\r
- wxPropertyAccessor *accessor,\r
- wxPropertyInfoFlags flags = 0,\r
- const wxString& helpString = wxEmptyString,\r
- const wxString& groupString = wxEmptyString) :\r
- m_itsClass(itsClass),\r
- m_name(name),\r
- m_typeInfo(NULL),\r
- m_typeName(wxString::FromAscii(collectionTypeName)),\r
- m_collectionElementTypeInfo(NULL),\r
- m_collectionElementTypeName(wxString::FromAscii(elementTypeName)),\r
- m_accessor(accessor),\r
- m_flags(flags),\r
- m_helpString(helpString),\r
- m_groupString(groupString)\r
- {\r
- Insert(iter);\r
- }\r
-#endif\r
- ~wxPropertyInfo()\r
- { Remove(); }\r
-\r
- // return the class this property is declared in\r
- const wxClassInfo* GetDeclaringClass() const { return m_itsClass; }\r
-\r
- // return the name of this property\r
- const wxString& GetName() const { return m_name; }\r
-\r
- // returns the flags of this property\r
- wxPropertyInfoFlags GetFlags() const { return m_flags; }\r
-\r
- // returns the short help string of this property\r
- const wxString& GetHelpString() const { return m_helpString; }\r
-\r
- // returns the group string of this property\r
- const wxString& GetGroupString() const { return m_groupString; }\r
-\r
- // return the element type info of this property (for collections, otherwise NULL)\r
- const wxTypeInfo * GetCollectionElementTypeInfo() const\r
- {\r
- if ( m_collectionElementTypeInfo == NULL )\r
- m_collectionElementTypeInfo = wxTypeInfo::FindType(m_collectionElementTypeName);\r
- return m_collectionElementTypeInfo;\r
- }\r
-\r
- // return the type info of this property\r
- const wxTypeInfo * GetTypeInfo() const\r
- {\r
- if ( m_typeInfo == NULL )\r
- m_typeInfo = wxTypeInfo::FindType(m_typeName);\r
- return m_typeInfo;\r
- }\r
-\r
- // return the accessor for this property\r
- wxPropertyAccessor* GetAccessor() const { return m_accessor; }\r
-\r
- // returns NULL if this is the last property of this class\r
- wxPropertyInfo* GetNext() const { return m_next; }\r
-\r
- // returns the default value of this property, its kind may be wxT_VOID if it is not valid\r
- wxVariantBase GetDefaultValue() const { return m_defaultValue; }\r
-\r
-private:\r
-\r
- // inserts this property at the end of the linked chain which begins\r
- // with "iter" property.\r
- void Insert(wxPropertyInfo* &iter);\r
-\r
- // removes this property from the linked chain of the m_itsClass properties.\r
- void Remove();\r
-\r
- wxClassInfo* m_itsClass;\r
- wxString m_name;\r
- mutable wxTypeInfo* m_typeInfo;\r
- wxString m_typeName;\r
- mutable wxTypeInfo* m_collectionElementTypeInfo;\r
- wxString m_collectionElementTypeName;\r
- wxPropertyAccessor* m_accessor;\r
- wxVariantBase m_defaultValue;\r
- wxPropertyInfoFlags m_flags;\r
- wxString m_helpString;\r
- wxString m_groupString;\r
- wxPropertyInfo* m_next;\r
-\r
- // FIXME: what's this comment about??\r
- // string representation of the default value\r
- // to be assigned by the designer to the property\r
- // when the component is dropped on the container.\r
-};\r
-\r
-WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxPropertyInfo*, wxPropertyInfoMap, \r
- class WXDLLIMPEXP_BASE );\r
-\r
-#define wxBEGIN_PROPERTIES_TABLE(theClass) \\r
- wxPropertyInfo *theClass::GetPropertiesStatic() \\r
- { \\r
- typedef theClass class_t; \\r
- static wxPropertyInfo* first = NULL;\r
-\r
-#define wxEND_PROPERTIES_TABLE() \\r
- return first; }\r
-\r
-#define wxHIDE_PROPERTY( pname ) \\r
- static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \\r
- wxT(#pname), typeid(void).name(), NULL, wxVariantBase(), wxPROP_DONT_STREAM, \\r
- wxEmptyString, wxEmptyString );\r
-\r
-#define wxPROPERTY( pname, type, setter, getter, defaultValue, flags, help, group) \\r
- wxPROPERTY_SETTER( pname, class_t, type, setter ) \\r
- static wxPropertySetter##pname _setter##pname; \\r
- wxPROPERTY_GETTER( pname, class_t, type, getter ) \\r
- static wxPropertyGetter##pname _getter##pname; \\r
- static wxPropertyAccessor _accessor##pname( &_setter##pname, \\r
- &_getter##pname, NULL, NULL ); \\r
- static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \\r
- wxT(#pname), typeid(type).name(), &_accessor##pname, \\r
- wxVariantBase(defaultValue), flags, group, help );\r
-\r
-#define wxPROPERTY_FLAGS( pname, flags, type, setter, getter,defaultValue, \\r
- pflags, help, group) \\r
- wxPROPERTY_SETTER( pname, class_t, type, setter ) \\r
- static wxPropertySetter##pname _setter##pname; \\r
- wxPROPERTY_GETTER( pname, class_t, type, getter ) \\r
- static wxPropertyGetter##pname _getter##pname; \\r
- static wxPropertyAccessor _accessor##pname( &_setter##pname, \\r
- &_getter##pname, NULL, NULL ); \\r
- static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \\r
- wxT(#pname), typeid(flags).name(), &_accessor##pname, \\r
- wxVariantBase(defaultValue), wxPROP_ENUM_STORE_LONG | pflags, help, group );\r
-\r
-#define wxREADONLY_PROPERTY( pname, type, getter,defaultValue, flags, help, group) \\r
- wxPROPERTY_GETTER( pname, class_t, type, getter ) \\r
- static wxPropertyGetter##pname _getter##pname; \\r
- static wxPropertyAccessor _accessor##pname( NULL, &_getter##pname, NULL, NULL ); \\r
- static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \\r
- wxT(#pname), typeid(type).name(),&_accessor##pname, \\r
- wxVariantBase(defaultValue), flags, help, group );\r
-\r
-#define wxREADONLY_PROPERTY_FLAGS( pname, flags, type, getter,defaultValue, \\r
- pflags, help, group) \\r
- wxPROPERTY_GETTER( pname, class_t, type, getter ) \\r
- static wxPropertyGetter##pname _getter##pname; \\r
- static wxPropertyAccessor _accessor##pname( NULL, &_getter##pname, NULL, NULL ); \\r
- static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \\r
- wxT(#pname), typeid(flags).name(),&_accessor##pname, \\r
- wxVariantBase(defaultValue), wxPROP_ENUM_STORE_LONG | pflags, help, group );\r
-\r
-#define wxPROPERTY_COLLECTION( pname, colltype, addelemtype, adder, getter, \\r
- flags, help, group ) \\r
- wxPROPERTY_COLLECTION_ADDER( pname, class_t, addelemtype, adder ) \\r
- static wxPropertyCollectionAdder##pname _adder##pname; \\r
- wxPROPERTY_COLLECTION_GETTER( pname, class_t, colltype, getter ) \\r
- static wxPropertyCollectionGetter##pname _collectionGetter##pname; \\r
- static wxPropertyAccessor _accessor##pname( NULL, NULL,&_adder##pname, \\r
- &_collectionGetter##pname ); \\r
- static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \\r
- wxT(#pname), typeid(colltype).name(),typeid(addelemtype).name(), \\r
- &_accessor##pname, flags, help, group );\r
-\r
-#define wxREADONLY_PROPERTY_COLLECTION( pname, colltype, addelemtype, getter, \\r
- flags, help, group) \\r
- wxPROPERTY_COLLECTION_GETTER( pname, class_t, colltype, getter ) \\r
- static wxPropertyCollectionGetter##pname _collectionGetter##pname; \\r
- static wxPropertyAccessor _accessor##pname( NULL, NULL, NULL, \\r
- &_collectionGetter##pname ); \\r
- static wxPropertyInfo _propertyInfo##pname( first,class_t::GetClassInfoStatic(), \\r
- wxT(#pname), typeid(colltype).name(),typeid(addelemtype).name(), \\r
- &_accessor##pname, flags, help, group );\r
-\r
-#define wxEVENT_PROPERTY( name, eventType, eventClass ) \\r
- static wxEventSourceTypeInfo _typeInfo##name( eventType, CLASSINFO( eventClass ) ); \\r
- static wxPropertyInfo _propertyInfo##name( first,class_t::GetClassInfoStatic(), \\r
- wxT(#name), &_typeInfo##name, NULL, wxVariantBase() );\r
-\r
-#define wxEVENT_RANGE_PROPERTY( name, eventType, lastEventType, eventClass ) \\r
- static wxEventSourceTypeInfo _typeInfo##name( eventType, lastEventType, \\r
- CLASSINFO( eventClass ) ); \\r
- static wxPropertyInfo _propertyInfo##name( first, class_t::GetClassInfoStatic(), \\r
- wxT(#name), &_typeInfo##name, NULL, wxVariantBase() );\r
-\r
-// ----------------------------------------------------------------------------\r
-// Implementation Helper for Simple Properties\r
-// ----------------------------------------------------------------------------\r
-\r
-#define wxIMPLEMENT_PROPERTY(name, type) \\r
-private: \\r
- type m_##name; \\r
-public: \\r
- void Set##name( type const & p) { m_##name = p; } \\r
- type const & Get##name() const { return m_##name; }\r
-\r
-#endif // wxUSE_EXTENDED_RTTI\r
-#endif // _XTIPROP_H_\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/xtiprop.h
+// Purpose: XTI properties
+// Author: Stefan Csomor
+// Modified by: Francesco Montorsi
+// Created: 27/07/03
+// RCS-ID: $Id$
+// Copyright: (c) 1997 Julian Smart
+// (c) 2003 Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _XTIPROP_H_
+#define _XTIPROP_H_
+
+#include "wx/defs.h"
+
+#if wxUSE_EXTENDED_RTTI
+
+#include "wx/string.h"
+#include "wx/variant.h"
+#include "wx/intl.h"
+#include "wx/log.h"
+#include "wx/xtitypes.h"
+
+class WXDLLIMPEXP_BASE wxObject;
+class WXDLLIMPEXP_BASE wxClassInfo;
+class WXDLLIMPEXP_BASE wxDynamicClassInfo;
+class WXDLLIMPEXP_BASE wxHashTable;
+class WXDLLIMPEXP_BASE wxHashTable_Node;
+class WXDLLIMPEXP_BASE wxObjectRefData;
+class WXDLLIMPEXP_BASE wxEvent;
+class WXDLLIMPEXP_BASE wxEvtHandler;
+
+// ----------------------------------------------------------------------------
+// Property Accessors
+//
+// wxPropertySetter/Getter/CollectionGetter/CollectionAdder are all property
+// accessors which are managed by wxPropertyAccessor class which in turn is
+// handled by wxPropertyInfo.
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxPropertySetter
+{
+public:
+ wxPropertySetter( const wxString name ) { m_name = name; }
+ virtual ~wxPropertySetter() {}
+
+ virtual void Set( wxObject *object, const wxVariantBase &variantValue ) const = 0;
+ const wxString& GetName() const { return m_name; }
+
+private:
+ wxString m_name;
+};
+
+class WXDLLIMPEXP_BASE wxPropertyGetter
+{
+public:
+ wxPropertyGetter( const wxString name ) { m_name = name; }
+ virtual ~wxPropertyGetter() {}
+
+ virtual void Get( const wxObject *object, wxVariantBase& result) const = 0;
+ const wxString& GetName() const { return m_name; }
+
+private:
+ wxString m_name;
+};
+
+class WXDLLIMPEXP_BASE wxPropertyCollectionGetter
+{
+public:
+ wxPropertyCollectionGetter( const wxString name ) { m_name = name; }
+ virtual ~wxPropertyCollectionGetter() {}
+
+ virtual void Get( const wxObject *object, wxVariantBaseArray& result) const = 0;
+ const wxString& GetName() const { return m_name; }
+
+private:
+ wxString m_name;
+};
+
+template<typename coll_t> void WXDLLIMPEXP_BASE \
+ wxCollectionToVariantArray( const coll_t& coll, wxVariantBaseArray& result );
+
+class WXDLLIMPEXP_BASE wxPropertyCollectionAdder
+{
+public:
+ wxPropertyCollectionAdder( const wxString name ) { m_name = name; }
+ virtual ~wxPropertyCollectionAdder() {}
+
+ virtual void Add( wxObject *object, const wxVariantBase &variantValue ) const= 0;
+ const wxString& GetName() const { return m_name; }
+
+private:
+ wxString m_name;
+};
+
+#define wxPROPERTY_SETTER( property, Klass, valueType, setterMethod ) \
+class wxPropertySetter##property : public wxPropertySetter \
+{ \
+public: \
+ wxINFUNC_CLASS_TYPE_FIX(Klass) \
+ wxPropertySetter##property() : wxPropertySetter( wxT(#setterMethod) ) {} \
+ virtual ~wxPropertySetter##property() {} \
+ \
+ void Set( wxObject *object, const wxVariantBase &variantValue ) const \
+ { \
+ Klass *obj = dynamic_cast<Klass*>(object); \
+ if ( variantValue.wxTEMPLATED_MEMBER_CALL(HasData, valueType) ) \
+ obj->setterMethod(variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType)); \
+ else \
+ obj->setterMethod(*variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType*)); \
+ } \
+};
+
+#define wxPROPERTY_GETTER( property, Klass, valueType, gettermethod ) \
+class wxPropertyGetter##property : public wxPropertyGetter \
+{ \
+public: \
+ wxINFUNC_CLASS_TYPE_FIX(Klass) \
+ wxPropertyGetter##property() : wxPropertyGetter( wxT(#gettermethod) ) {} \
+ virtual ~wxPropertyGetter##property() {} \
+ \
+ void Get( const wxObject *object, wxVariantBase &result) const \
+ { \
+ const Klass *obj = dynamic_cast<const Klass*>(object); \
+ result = wxVariantBase( obj->gettermethod() ); \
+ } \
+};
+
+#define wxPROPERTY_COLLECTION_ADDER( property, Klass, valueType, addermethod ) \
+class wxPropertyCollectionAdder##property : public wxPropertyCollectionAdder \
+{ \
+public: \
+ wxINFUNC_CLASS_TYPE_FIX(Klass) \
+ wxPropertyCollectionAdder##property() : wxPropertyCollectionAdder( wxT(#addermethod) ) {} \
+ virtual ~wxPropertyCollectionAdder##property() {} \
+ \
+ void Add( wxObject *object, const wxVariantBase &variantValue ) const \
+ { \
+ Klass *obj = dynamic_cast<Klass*>(object); \
+ if ( variantValue.wxTEMPLATED_MEMBER_CALL(HasData, valueType) ) \
+ obj->addermethod(variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType)); \
+ else \
+ obj->addermethod(*variantValue.wxTEMPLATED_MEMBER_CALL(Get, valueType*)); \
+ } \
+};
+
+#define wxPROPERTY_COLLECTION_GETTER( property, Klass, valueType, gettermethod ) \
+class wxPropertyCollectionGetter##property : public wxPropertyCollectionGetter \
+{ \
+public: \
+ wxINFUNC_CLASS_TYPE_FIX(Klass) \
+ wxPropertyCollectionGetter##property() : wxPropertyCollectionGetter( wxT(#gettermethod) ) {} \
+ virtual ~wxPropertyCollectionGetter##property() {} \
+ \
+ void Get( const wxObject *object, wxVariantBaseArray &result) const \
+ { \
+ const Klass *obj = dynamic_cast<const Klass*>(object); \
+ wxCollectionToVariantArray( obj->gettermethod(), result ); \
+ } \
+};
+
+class WXDLLIMPEXP_BASE wxPropertyAccessor
+{
+public:
+ wxPropertyAccessor( wxPropertySetter *setter, wxPropertyGetter *getter,
+ wxPropertyCollectionAdder *adder, wxPropertyCollectionGetter *collectionGetter )
+ { m_setter = setter; m_getter = getter; m_adder = adder;
+ m_collectionGetter = collectionGetter; }
+
+ virtual ~wxPropertyAccessor() {}
+
+ // Setting a simple property (non-collection)
+ virtual void SetProperty(wxObject *object, const wxVariantBase &value) const
+ {
+ if ( m_setter )
+ m_setter->Set( object, value );
+ else
+ wxLogError( _("SetProperty called w/o valid setter") );
+ }
+
+ // Getting a simple property (non-collection)
+ virtual void GetProperty(const wxObject *object, wxVariantBase &result) const
+ {
+ if ( m_getter )
+ m_getter->Get( object, result );
+ else
+ wxLogError( _("GetProperty called w/o valid getter") );
+ }
+
+ // Adding an element to a collection property
+ virtual void AddToPropertyCollection(wxObject *object, const wxVariantBase &value) const
+ {
+ if ( m_adder )
+ m_adder->Add( object, value );
+ else
+ wxLogError( _("AddToPropertyCollection called w/o valid adder") );
+ }
+
+ // Getting a collection property
+ virtual void GetPropertyCollection( const wxObject *obj, wxVariantBaseArray &result) const
+ {
+ if ( m_collectionGetter )
+ m_collectionGetter->Get( obj, result);
+ else
+ wxLogError( _("GetPropertyCollection called w/o valid collection getter") );
+ }
+
+ virtual bool HasSetter() const { return m_setter != NULL; }
+ virtual bool HasCollectionGetter() const { return m_collectionGetter != NULL; }
+ virtual bool HasGetter() const { return m_getter != NULL; }
+ virtual bool HasAdder() const { return m_adder != NULL; }
+
+ virtual const wxString& GetCollectionGetterName() const
+ { return m_collectionGetter->GetName(); }
+ virtual const wxString& GetGetterName() const
+ { return m_getter->GetName(); }
+ virtual const wxString& GetSetterName() const
+ { return m_setter->GetName(); }
+ virtual const wxString& GetAdderName() const
+ { return m_adder->GetName(); }
+
+protected:
+ wxPropertySetter *m_setter;
+ wxPropertyCollectionAdder *m_adder;
+ wxPropertyGetter *m_getter;
+ wxPropertyCollectionGetter* m_collectionGetter;
+};
+
+class WXDLLIMPEXP_BASE wxGenericPropertyAccessor : public wxPropertyAccessor
+{
+public:
+ wxGenericPropertyAccessor( const wxString &propName );
+ virtual ~wxGenericPropertyAccessor();
+
+ void RenameProperty( const wxString& WXUNUSED_UNLESS_DEBUG(oldName),
+ const wxString& newName )
+ {
+ wxASSERT( oldName == m_propertyName ); m_propertyName = newName;
+ }
+
+ virtual bool HasSetter() const { return true; }
+ virtual bool HasGetter() const { return true; }
+ virtual bool HasAdder() const { return false; }
+ virtual bool HasCollectionGetter() const { return false; }
+
+ virtual const wxString& GetGetterName() const
+ { return m_getterName; }
+ virtual const wxString& GetSetterName() const
+ { return m_setterName; }
+
+ virtual void SetProperty(wxObject *object, const wxVariantBase &value) const;
+ virtual void GetProperty(const wxObject *object, wxVariantBase &value) const;
+
+ // Adding an element to a collection property
+ virtual void AddToPropertyCollection(wxObject *WXUNUSED(object),
+ const wxVariantBase &WXUNUSED(value)) const
+ {
+ wxLogError( _("AddToPropertyCollection called on a generic accessor") );
+ }
+
+ // Getting a collection property
+ virtual void GetPropertyCollection( const wxObject *WXUNUSED(obj),
+ wxVariantBaseArray &WXUNUSED(result)) const
+ {
+ wxLogError ( _("GetPropertyCollection called on a generic accessor") );
+ }
+
+private:
+ struct wxGenericPropertyAccessorInternal;
+ wxGenericPropertyAccessorInternal* m_data;
+ wxString m_propertyName;
+ wxString m_setterName;
+ wxString m_getterName;
+};
+
+typedef long wxPropertyInfoFlags;
+enum
+{
+ // will be removed in future releases
+ wxPROP_DEPRECATED = 0x00000001,
+
+ // object graph property, will be streamed with priority (after constructor properties)
+ wxPROP_OBJECT_GRAPH = 0x00000002,
+
+ // this will only be streamed out and in as enum/set, the internal representation
+ // is still a long
+ wxPROP_ENUM_STORE_LONG = 0x00000004,
+
+ // don't stream out this property, needed eg to avoid streaming out children
+ // that are always created by their parents
+ wxPROP_DONT_STREAM = 0x00000008
+};
+
+
+// ----------------------------------------------------------------------------
+// Property Support
+//
+// wxPropertyInfo is used to inquire of the property by name. It doesn't
+// provide access to the property, only information about it. If you
+// want access, look at wxPropertyAccessor.
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxPropertyInfo
+{
+ friend class WXDLLIMPEXP_BASE wxDynamicClassInfo;
+
+public:
+ wxPropertyInfo(wxPropertyInfo* &iter,
+ wxClassInfo* itsClass,
+ const wxString& name,
+ const wxString& typeName,
+ wxPropertyAccessor *accessor,
+ wxVariantBase dv,
+ wxPropertyInfoFlags flags = 0,
+ const wxString& helpString = wxEmptyString,
+ const wxString& groupString = wxEmptyString) :
+ m_itsClass(itsClass),
+ m_name(name),
+ m_typeInfo(NULL),
+ m_typeName(typeName),
+ m_collectionElementTypeInfo(NULL),
+ m_accessor(accessor),
+ m_defaultValue(dv),
+ m_flags(flags),
+ m_helpString(helpString),
+ m_groupString(groupString)
+ {
+ Insert(iter);
+ }
+
+#if wxUSE_UNICODE
+ wxPropertyInfo(wxPropertyInfo* &iter,
+ wxClassInfo* itsClass,
+ const wxString& name,
+ const char* typeName,
+ wxPropertyAccessor *accessor,
+ wxVariantBase dv,
+ wxPropertyInfoFlags flags = 0,
+ const wxString& helpString = wxEmptyString,
+ const wxString& groupString = wxEmptyString) :
+ m_itsClass(itsClass),
+ m_name(name),
+ m_typeInfo(NULL),
+ m_typeName(wxString::FromAscii(typeName)),
+ m_collectionElementTypeInfo(NULL),
+ m_accessor(accessor),
+ m_defaultValue(dv),
+ m_flags(flags),
+ m_helpString(helpString),
+ m_groupString(groupString)
+ {
+ Insert(iter);
+ }
+#endif
+ wxPropertyInfo(wxPropertyInfo* &iter,
+ wxClassInfo* itsClass,
+ const wxString& name,
+ wxEventSourceTypeInfo* type,
+ wxPropertyAccessor *accessor,
+ wxVariantBase dv,
+ wxPropertyInfoFlags flags = 0,
+ const wxString& helpString = wxEmptyString,
+ const wxString& groupString = wxEmptyString) :
+ m_itsClass(itsClass),
+ m_name(name),
+ m_typeInfo(type),
+ m_collectionElementTypeInfo(NULL),
+ m_accessor(accessor),
+ m_defaultValue(dv),
+ m_flags(flags),
+ m_helpString(helpString),
+ m_groupString(groupString)
+ {
+ Insert(iter);
+ }
+
+ wxPropertyInfo(wxPropertyInfo* &iter,
+ wxClassInfo* itsClass, const wxString& name,
+ const wxString& collectionTypeName,
+ const wxString& elementTypeName,
+ wxPropertyAccessor *accessor,
+ wxPropertyInfoFlags flags = 0,
+ const wxString& helpString = wxEmptyString,
+ const wxString& groupString = wxEmptyString) :
+ m_itsClass(itsClass),
+ m_name(name),
+ m_typeInfo(NULL),
+ m_typeName(collectionTypeName),
+ m_collectionElementTypeInfo(NULL),
+ m_collectionElementTypeName(elementTypeName),
+ m_accessor(accessor),
+ m_flags(flags),
+ m_helpString(helpString),
+ m_groupString(groupString)
+ {
+ Insert(iter);
+ }
+
+#if wxUSE_UNICODE
+ wxPropertyInfo(wxPropertyInfo* &iter,
+ wxClassInfo* itsClass, const wxString& name,
+ const char* collectionTypeName,
+ const char* elementTypeName,
+ wxPropertyAccessor *accessor,
+ wxPropertyInfoFlags flags = 0,
+ const wxString& helpString = wxEmptyString,
+ const wxString& groupString = wxEmptyString) :
+ m_itsClass(itsClass),
+ m_name(name),
+ m_typeInfo(NULL),
+ m_typeName(wxString::FromAscii(collectionTypeName)),
+ m_collectionElementTypeInfo(NULL),
+ m_collectionElementTypeName(wxString::FromAscii(elementTypeName)),
+ m_accessor(accessor),
+ m_flags(flags),
+ m_helpString(helpString),
+ m_groupString(groupString)
+ {
+ Insert(iter);
+ }
+#endif
+ ~wxPropertyInfo()
+ { Remove(); }
+
+ // return the class this property is declared in
+ const wxClassInfo* GetDeclaringClass() const { return m_itsClass; }
+
+ // return the name of this property
+ const wxString& GetName() const { return m_name; }
+
+ // returns the flags of this property
+ wxPropertyInfoFlags GetFlags() const { return m_flags; }
+
+ // returns the short help string of this property
+ const wxString& GetHelpString() const { return m_helpString; }
+
+ // returns the group string of this property
+ const wxString& GetGroupString() const { return m_groupString; }
+
+ // return the element type info of this property (for collections, otherwise NULL)
+ const wxTypeInfo * GetCollectionElementTypeInfo() const
+ {
+ if ( m_collectionElementTypeInfo == NULL )
+ m_collectionElementTypeInfo = wxTypeInfo::FindType(m_collectionElementTypeName);
+ return m_collectionElementTypeInfo;
+ }
+
+ // return the type info of this property
+ const wxTypeInfo * GetTypeInfo() const
+ {
+ if ( m_typeInfo == NULL )
+ m_typeInfo = wxTypeInfo::FindType(m_typeName);
+ return m_typeInfo;
+ }
+
+ // return the accessor for this property
+ wxPropertyAccessor* GetAccessor() const { return m_accessor; }
+
+ // returns NULL if this is the last property of this class
+ wxPropertyInfo* GetNext() const { return m_next; }
+
+ // returns the default value of this property, its kind may be wxT_VOID if it is not valid
+ wxVariantBase GetDefaultValue() const { return m_defaultValue; }
+
+private:
+
+ // inserts this property at the end of the linked chain which begins
+ // with "iter" property.
+ void Insert(wxPropertyInfo* &iter);
+
+ // removes this property from the linked chain of the m_itsClass properties.
+ void Remove();
+
+ wxClassInfo* m_itsClass;
+ wxString m_name;
+ mutable wxTypeInfo* m_typeInfo;
+ wxString m_typeName;
+ mutable wxTypeInfo* m_collectionElementTypeInfo;
+ wxString m_collectionElementTypeName;
+ wxPropertyAccessor* m_accessor;
+ wxVariantBase m_defaultValue;
+ wxPropertyInfoFlags m_flags;
+ wxString m_helpString;
+ wxString m_groupString;
+ wxPropertyInfo* m_next;
+
+ // FIXME: what's this comment about??
+ // string representation of the default value
+ // to be assigned by the designer to the property
+ // when the component is dropped on the container.
+};
+
+WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxPropertyInfo*, wxPropertyInfoMap,
+ class WXDLLIMPEXP_BASE );
+
+#define wxBEGIN_PROPERTIES_TABLE(theClass) \
+ wxPropertyInfo *theClass::GetPropertiesStatic() \
+ { \
+ typedef theClass class_t; \
+ static wxPropertyInfo* first = NULL;
+
+#define wxEND_PROPERTIES_TABLE() \
+ return first; }
+
+#define wxHIDE_PROPERTY( pname ) \
+ static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \
+ wxT(#pname), typeid(void).name(), NULL, wxVariantBase(), wxPROP_DONT_STREAM, \
+ wxEmptyString, wxEmptyString );
+
+#define wxPROPERTY( pname, type, setter, getter, defaultValue, flags, help, group) \
+ wxPROPERTY_SETTER( pname, class_t, type, setter ) \
+ static wxPropertySetter##pname _setter##pname; \
+ wxPROPERTY_GETTER( pname, class_t, type, getter ) \
+ static wxPropertyGetter##pname _getter##pname; \
+ static wxPropertyAccessor _accessor##pname( &_setter##pname, \
+ &_getter##pname, NULL, NULL ); \
+ static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \
+ wxT(#pname), typeid(type).name(), &_accessor##pname, \
+ wxVariantBase(defaultValue), flags, group, help );
+
+#define wxPROPERTY_FLAGS( pname, flags, type, setter, getter,defaultValue, \
+ pflags, help, group) \
+ wxPROPERTY_SETTER( pname, class_t, type, setter ) \
+ static wxPropertySetter##pname _setter##pname; \
+ wxPROPERTY_GETTER( pname, class_t, type, getter ) \
+ static wxPropertyGetter##pname _getter##pname; \
+ static wxPropertyAccessor _accessor##pname( &_setter##pname, \
+ &_getter##pname, NULL, NULL ); \
+ static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \
+ wxT(#pname), typeid(flags).name(), &_accessor##pname, \
+ wxVariantBase(defaultValue), wxPROP_ENUM_STORE_LONG | pflags, help, group );
+
+#define wxREADONLY_PROPERTY( pname, type, getter,defaultValue, flags, help, group) \
+ wxPROPERTY_GETTER( pname, class_t, type, getter ) \
+ static wxPropertyGetter##pname _getter##pname; \
+ static wxPropertyAccessor _accessor##pname( NULL, &_getter##pname, NULL, NULL ); \
+ static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \
+ wxT(#pname), typeid(type).name(),&_accessor##pname, \
+ wxVariantBase(defaultValue), flags, help, group );
+
+#define wxREADONLY_PROPERTY_FLAGS( pname, flags, type, getter,defaultValue, \
+ pflags, help, group) \
+ wxPROPERTY_GETTER( pname, class_t, type, getter ) \
+ static wxPropertyGetter##pname _getter##pname; \
+ static wxPropertyAccessor _accessor##pname( NULL, &_getter##pname, NULL, NULL ); \
+ static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \
+ wxT(#pname), typeid(flags).name(),&_accessor##pname, \
+ wxVariantBase(defaultValue), wxPROP_ENUM_STORE_LONG | pflags, help, group );
+
+#define wxPROPERTY_COLLECTION( pname, colltype, addelemtype, adder, getter, \
+ flags, help, group ) \
+ wxPROPERTY_COLLECTION_ADDER( pname, class_t, addelemtype, adder ) \
+ static wxPropertyCollectionAdder##pname _adder##pname; \
+ wxPROPERTY_COLLECTION_GETTER( pname, class_t, colltype, getter ) \
+ static wxPropertyCollectionGetter##pname _collectionGetter##pname; \
+ static wxPropertyAccessor _accessor##pname( NULL, NULL,&_adder##pname, \
+ &_collectionGetter##pname ); \
+ static wxPropertyInfo _propertyInfo##pname( first, class_t::GetClassInfoStatic(), \
+ wxT(#pname), typeid(colltype).name(),typeid(addelemtype).name(), \
+ &_accessor##pname, flags, help, group );
+
+#define wxREADONLY_PROPERTY_COLLECTION( pname, colltype, addelemtype, getter, \
+ flags, help, group) \
+ wxPROPERTY_COLLECTION_GETTER( pname, class_t, colltype, getter ) \
+ static wxPropertyCollectionGetter##pname _collectionGetter##pname; \
+ static wxPropertyAccessor _accessor##pname( NULL, NULL, NULL, \
+ &_collectionGetter##pname ); \
+ static wxPropertyInfo _propertyInfo##pname( first,class_t::GetClassInfoStatic(), \
+ wxT(#pname), typeid(colltype).name(),typeid(addelemtype).name(), \
+ &_accessor##pname, flags, help, group );
+
+#define wxEVENT_PROPERTY( name, eventType, eventClass ) \
+ static wxEventSourceTypeInfo _typeInfo##name( eventType, CLASSINFO( eventClass ) ); \
+ static wxPropertyInfo _propertyInfo##name( first,class_t::GetClassInfoStatic(), \
+ wxT(#name), &_typeInfo##name, NULL, wxVariantBase() );
+
+#define wxEVENT_RANGE_PROPERTY( name, eventType, lastEventType, eventClass ) \
+ static wxEventSourceTypeInfo _typeInfo##name( eventType, lastEventType, \
+ CLASSINFO( eventClass ) ); \
+ static wxPropertyInfo _propertyInfo##name( first, class_t::GetClassInfoStatic(), \
+ wxT(#name), &_typeInfo##name, NULL, wxVariantBase() );
+
+// ----------------------------------------------------------------------------
+// Implementation Helper for Simple Properties
+// ----------------------------------------------------------------------------
+
+#define wxIMPLEMENT_PROPERTY(name, type) \
+private: \
+ type m_##name; \
+public: \
+ void Set##name( type const & p) { m_##name = p; } \
+ type const & Get##name() const { return m_##name; }
+
+#endif // wxUSE_EXTENDED_RTTI
+#endif // _XTIPROP_H_
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: wx/xtitypes.h\r
-// Purpose: enum, set, basic types support\r
-// Author: Stefan Csomor\r
-// Modified by: Francesco Montorsi\r
-// Created: 27/07/03\r
-// RCS-ID: $Id: xti.h 47299 2007-07-10 15:58:27Z FM $\r
-// Copyright: (c) 1997 Julian Smart\r
-// (c) 2003 Stefan Csomor\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-#ifndef _XTITYPES_H_\r
-#define _XTITYPES_H_\r
-\r
-#include "wx/defs.h"\r
-\r
-#if wxUSE_EXTENDED_RTTI\r
-\r
-#include "wx/string.h"\r
-#include "wx/hashmap.h"\r
-#include "wx/arrstr.h"\r
-#include "wx/flags.h"\r
-#include "wx/intl.h"\r
-#include "wx/log.h"\r
-#include <typeinfo>\r
-\r
-class WXDLLIMPEXP_BASE wxClassInfo;\r
-\r
-// ----------------------------------------------------------------------------\r
-// Enum Support\r
-//\r
-// In the header files XTI requires no change from pure c++ code, however in the\r
-// implementation, an enum needs to be enumerated eg:\r
-//\r
-// wxBEGIN_ENUM( wxFlavor )\r
-// wxENUM_MEMBER( Vanilla )\r
-// wxENUM_MEMBER( Chocolate )\r
-// wxENUM_MEMBER( Strawberry )\r
-// wxEND_ENUM( wxFlavor )\r
-// ----------------------------------------------------------------------------\r
-\r
-struct WXDLLIMPEXP_BASE wxEnumMemberData\r
-{\r
- const wxChar* m_name;\r
- int m_value;\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxEnumData\r
-{\r
-public:\r
- wxEnumData( wxEnumMemberData* data );\r
-\r
- // returns true if the member has been found and sets the int value\r
- // pointed to accordingly (if ptr != null )\r
- // if not found returns false, value left unchanged\r
- bool HasEnumMemberValue( const wxChar *name, int *value = NULL ) const;\r
-\r
- // returns the value of the member, if not found in debug mode an\r
- // assert is issued, in release 0 is returned\r
- int GetEnumMemberValue(const wxChar *name ) const;\r
-\r
- // returns the name of the enum member having the passed in value\r
- // returns an emtpy string if not found\r
- const wxChar *GetEnumMemberName(int value) const;\r
-\r
- // returns the number of members in this enum\r
- int GetEnumCount() const { return m_count; }\r
-\r
- // returns the value of the nth member\r
- int GetEnumMemberValueByIndex( int n ) const;\r
-\r
- // returns the value of the nth member\r
- const wxChar *GetEnumMemberNameByIndex( int n ) const;\r
-\r
-private:\r
- wxEnumMemberData *m_members;\r
- int m_count;\r
-};\r
-\r
-#define wxBEGIN_ENUM( e ) \\r
- wxEnumMemberData s_enumDataMembers##e[] = {\r
-\r
-#define wxENUM_MEMBER( v ) { wxT(#v), v },\r
-\r
-#define wxEND_ENUM( e ) \\r
- { NULL, 0 } }; \\r
- wxEnumData s_enumData##e( s_enumDataMembers##e ); \\r
- wxEnumData *wxGetEnumData(e) { return &s_enumData##e; } \\r
- template<> void wxStringReadValue(const wxString& s, e &data ) \\r
- { data = (e) s_enumData##e.GetEnumMemberValue(s); } \\r
- template<> void wxStringWriteValue(wxString &s, const e &data ) \\r
- { s = s_enumData##e.GetEnumMemberName((int)data); } \\r
- void FromLong##e( long data, wxVariantBase& result ) \\r
- { result = wxVariantBase((e)data); } \\r
- void ToLong##e( const wxVariantBase& data, long &result ) \\r
- { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, e); } \\r
- \\r
- wxTO_STRING_IMP( e ) \\r
- wxFROM_STRING_IMP( e ) \\r
- wxEnumTypeInfo s_typeInfo##e(wxT_ENUM, &s_enumData##e, \\r
- &wxTO_STRING( e ), &wxFROM_STRING( e ), &ToLong##e, \\r
- &FromLong##e, typeid(e).name() );\r
-\r
-\r
-// ----------------------------------------------------------------------------\r
-// Set Support\r
-//\r
-// in the header :\r
-//\r
-// enum wxFlavor\r
-// {\r
-// Vanilla,\r
-// Chocolate,\r
-// Strawberry,\r
-// };\r
-//\r
-// typedef wxBitset<wxFlavor> wxCoupe;\r
-//\r
-// in the implementation file :\r
-//\r
-// wxBEGIN_ENUM( wxFlavor )\r
-// wxENUM_MEMBER( Vanilla )\r
-// wxENUM_MEMBER( Chocolate )\r
-// wxENUM_MEMBER( Strawberry )\r
-// wxEND_ENUM( wxFlavor )\r
-//\r
-// wxIMPLEMENT_SET_STREAMING( wxCoupe, wxFlavor )\r
-//\r
-// implementation note: no partial specialization for streaming, but a delegation \r
-// to a different class\r
-//\r
-// ----------------------------------------------------------------------------\r
-\r
-// in order to remove dependancy on string tokenizer\r
-void WXDLLIMPEXP_BASE wxSetStringToArray( const wxString &s, wxArrayString &array );\r
-\r
-template<typename e>\r
-void wxSetFromString(const wxString &s, wxBitset<e> &data )\r
-{\r
- wxEnumData* edata = wxGetEnumData((e) 0);\r
- data.reset();\r
-\r
- wxArrayString array;\r
- wxSetStringToArray( s, array );\r
- wxString flag;\r
- for ( int i = 0; i < array.Count(); ++i )\r
- {\r
- flag = array[i];\r
- int ivalue;\r
- if ( edata->HasEnumMemberValue( flag, &ivalue ) )\r
- {\r
- data.set( (e) ivalue );\r
- }\r
- }\r
-}\r
-\r
-template<typename e>\r
-void wxSetToString( wxString &s, const wxBitset<e> &data )\r
-{\r
- wxEnumData* edata = wxGetEnumData((e) 0);\r
- int count = edata->GetEnumCount();\r
- int i;\r
- s.Clear();\r
- for ( i = 0; i < count; i++ )\r
- {\r
- e value = (e) edata->GetEnumMemberValueByIndex(i);\r
- if ( data.test( value ) )\r
- {\r
- // this could also be done by the templated calls\r
- if ( !s.empty() )\r
- s += wxT("|");\r
- s += edata->GetEnumMemberNameByIndex(i);\r
- }\r
- }\r
-}\r
-\r
-#define wxIMPLEMENT_SET_STREAMING(SetName,e) \\r
- template<> void wxStringReadValue(const wxString &s, wxBitset<e> &data ) \\r
- { wxSetFromString( s, data ); } \\r
- template<> void wxStringWriteValue( wxString &s, const wxBitset<e> &data ) \\r
- { wxSetToString( s, data ); } \\r
- void FromLong##SetName( long data, wxVariantBase& result ) \\r
- { result = wxVariantBase(SetName((unsigned long)data)); } \\r
- void ToLong##SetName( const wxVariantBase& data, long &result ) \\r
- { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, SetName).to_ulong(); } \\r
- wxTO_STRING_IMP( SetName ) \\r
- wxFROM_STRING_IMP( SetName ) \\r
- wxEnumTypeInfo s_typeInfo##SetName(wxT_SET, &s_enumData##e, \\r
- &wxTO_STRING( SetName ), &wxFROM_STRING( SetName ), \\r
- &ToLong##SetName, &FromLong##SetName, typeid(SetName).name() );\r
-\r
-template<typename e>\r
-void wxFlagsFromString(const wxString &s, e &data )\r
-{\r
- wxEnumData* edata = wxGetEnumData((e*) 0);\r
- data.m_data = 0;\r
-\r
- wxArrayString array;\r
- wxSetStringToArray( s, array );\r
- wxString flag;\r
- for ( size_t i = 0; i < array.Count(); ++i )\r
- {\r
- flag = array[i];\r
- int ivalue;\r
- if ( edata->HasEnumMemberValue( flag, &ivalue ) )\r
- {\r
- data.m_data |= ivalue;\r
- }\r
- }\r
-}\r
-\r
-template<typename e>\r
-void wxFlagsToString( wxString &s, const e& data )\r
-{\r
- wxEnumData* edata = wxGetEnumData((e*) 0);\r
- int count = edata->GetEnumCount();\r
- int i;\r
- s.Clear();\r
- long dataValue = data.m_data;\r
- for ( i = 0; i < count; i++ )\r
- {\r
- int value = edata->GetEnumMemberValueByIndex(i);\r
- // make this to allow for multi-bit constants to work\r
- if ( value && ( dataValue & value ) == value )\r
- {\r
- // clear the flags we just set\r
- dataValue &= ~value;\r
- // this could also be done by the templated calls\r
- if ( !s.empty() )\r
- s +=wxT("|");\r
- s += edata->GetEnumMemberNameByIndex(i);\r
- }\r
- }\r
-}\r
-\r
-#define wxBEGIN_FLAGS( e ) \\r
- wxEnumMemberData s_enumDataMembers##e[] = {\r
-\r
-#define wxFLAGS_MEMBER( v ) { wxT(#v), v },\r
-\r
-#define wxEND_FLAGS( e ) \\r
- { NULL, 0 } }; \\r
- wxEnumData s_enumData##e( s_enumDataMembers##e ); \\r
- wxEnumData *wxGetEnumData(e*) { return &s_enumData##e; } \\r
- template<> void wxStringReadValue(const wxString &s, e &data ) \\r
- { wxFlagsFromString<e>( s, data ); } \\r
- template<> void wxStringWriteValue( wxString &s, const e& data ) \\r
- { wxFlagsToString<e>( s, data ); } \\r
- void FromLong##e( long data, wxVariantBase& result ) \\r
- { result = wxVariantBase(e(data)); } \\r
- void ToLong##e( const wxVariantBase& data, long &result ) \\r
- { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, e).m_data; } \\r
- wxTO_STRING_IMP( e ) \\r
- wxFROM_STRING_IMP( e ) \\r
- wxEnumTypeInfo s_typeInfo##e(wxT_SET, &s_enumData##e, \\r
- &wxTO_STRING( e ), &wxFROM_STRING( e ), &ToLong##e, \\r
- &FromLong##e, typeid(e).name() );\r
-\r
-// ----------------------------------------------------------------------------\r
-// Type Information\r
-// ----------------------------------------------------------------------------\r
-\r
-// All data exposed by the RTTI is characterized using the following classes.\r
-// The first characterization is done by wxTypeKind. All enums up to and including\r
-// wxT_CUSTOM represent so called simple types. These cannot be divided any further.\r
-// They can be converted to and from wxStrings, that's all.\r
-// Other wxTypeKinds can instead be splitted recursively into smaller parts until\r
-// the simple types are reached.\r
-\r
-enum wxTypeKind\r
-{\r
- wxT_VOID = 0, // unknown type\r
- wxT_BOOL,\r
- wxT_CHAR,\r
- wxT_UCHAR,\r
- wxT_INT,\r
- wxT_UINT,\r
- wxT_LONG,\r
- wxT_ULONG,\r
- wxT_FLOAT,\r
- wxT_DOUBLE,\r
- wxT_STRING, // must be wxString\r
- wxT_SET, // must be wxBitset<> template\r
- wxT_ENUM,\r
- wxT_CUSTOM, // user defined type (e.g. wxPoint)\r
-\r
- wxT_LAST_SIMPLE_TYPE_KIND = wxT_CUSTOM,\r
-\r
- wxT_OBJECT_PTR, // object reference\r
- wxT_OBJECT, // embedded object\r
- wxT_COLLECTION, // collection\r
-\r
- wxT_DELEGATE, // for connecting against an event source\r
-\r
- wxT_LAST_TYPE_KIND = wxT_DELEGATE // sentinel for bad data, asserts, debugging\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxVariantBase;\r
-class WXDLLIMPEXP_BASE wxTypeInfo;\r
-\r
-WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxTypeInfo*, wxTypeInfoMap, class WXDLLIMPEXP_BASE );\r
-\r
-class WXDLLIMPEXP_BASE wxTypeInfo\r
-{\r
-public:\r
- typedef void (*wxVariant2StringFnc)( const wxVariantBase& data, wxString &result );\r
- typedef void (*wxString2VariantFnc)( const wxString& data, wxVariantBase &result );\r
-\r
- wxTypeInfo(wxTypeKind kind,\r
- wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL,\r
- const wxString &name = wxEmptyString):\r
- m_toString(to), m_fromString(from), m_kind(kind), m_name(name)\r
- {\r
- Register();\r
- }\r
-#if wxUSE_UNICODE\r
- wxTypeInfo(wxTypeKind kind,\r
- wxVariant2StringFnc to, wxString2VariantFnc from,\r
- const char *name):\r
- m_toString(to), m_fromString(from), m_kind(kind), \r
- m_name(wxString::FromAscii(name))\r
- {\r
- Register();\r
- }\r
-#endif\r
-\r
- virtual ~wxTypeInfo()\r
- {\r
- Unregister();\r
- }\r
-\r
- // return the kind of this type (wxT_... constants)\r
- wxTypeKind GetKind() const { return m_kind; }\r
-\r
- // returns the unique name of this type\r
- const wxString& GetTypeName() const { return m_name; }\r
-\r
- // is this type a delegate type\r
- bool IsDelegateType() const { return m_kind == wxT_DELEGATE; }\r
-\r
- // is this type a custom type\r
- bool IsCustomType() const { return m_kind == wxT_CUSTOM; }\r
-\r
- // is this type an object type\r
- bool IsObjectType() const { return m_kind == wxT_OBJECT || m_kind == wxT_OBJECT_PTR; }\r
-\r
- // can the content of this type be converted to and from strings ?\r
- bool HasStringConverters() const { return m_toString != NULL && m_fromString != NULL; }\r
-\r
- // convert a wxVariantBase holding data of this type into a string\r
- void ConvertToString( const wxVariantBase& data, wxString &result ) const\r
- { \r
- if ( m_toString ) \r
- (*m_toString)( data, result ); \r
- else \r
- wxLogError( wxGetTranslation(_T("String conversions not supported")) ); \r
- }\r
-\r
- // convert a string into a wxVariantBase holding the corresponding data in this type\r
- void ConvertFromString( const wxString& data, wxVariantBase &result ) const\r
- { \r
- if( m_fromString ) \r
- (*m_fromString)( data, result ); \r
- else \r
- wxLogError( wxGetTranslation(_T("String conversions not supported")) ); \r
- }\r
-\r
- // statics:\r
-\r
-#if wxUSE_UNICODE\r
- static wxTypeInfo *FindType(const char *typeName) \r
- { return FindType( wxString::FromAscii(typeName) ); }\r
-#endif\r
- static wxTypeInfo *FindType(const wxChar *typeName);\r
- static wxTypeInfo *FindType(const wxString& typeName)\r
- {\r
-#if wxUSE_UNICODE\r
- return FindType( typeName.wchar_str() );\r
-#else\r
- return FindType( typeName.char_str() );\r
-#endif\r
- }\r
-\r
-private:\r
- void Register();\r
- void Unregister();\r
-\r
- wxVariant2StringFnc m_toString;\r
- wxString2VariantFnc m_fromString;\r
-\r
- wxTypeKind m_kind;\r
- wxString m_name;\r
-\r
- // the static list of all types we know about\r
- static wxTypeInfoMap* ms_typeTable;\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxBuiltInTypeInfo : public wxTypeInfo\r
-{\r
-public:\r
- wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to = NULL, \r
- wxString2VariantFnc from = NULL, \r
- const wxString &name = wxEmptyString ) :\r
- wxTypeInfo( kind, to, from, name )\r
- { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }\r
-\r
-#if wxUSE_UNICODE\r
- wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to, \r
- wxString2VariantFnc from , const char *name ) :\r
- wxTypeInfo( kind, to, from, name )\r
- { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }\r
-#endif\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxCustomTypeInfo : public wxTypeInfo\r
-{\r
-public:\r
- wxCustomTypeInfo( const wxString &name, wxVariant2StringFnc to, \r
- wxString2VariantFnc from ) :\r
- wxTypeInfo( wxT_CUSTOM, to, from, name )\r
- {}\r
-\r
-#if wxUSE_UNICODE\r
- wxCustomTypeInfo( const char *name , wxVariant2StringFnc to, \r
- wxString2VariantFnc from ) :\r
- wxTypeInfo( wxT_CUSTOM, to, from, name )\r
- {}\r
-#endif\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxEnumTypeInfo : public wxTypeInfo\r
-{\r
-public:\r
- typedef void (*converterToLong_t)( const wxVariantBase& data, long &result );\r
- typedef void (*converterFromLong_t)( long data, wxVariantBase &result );\r
-\r
- wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,\r
- wxString2VariantFnc from, converterToLong_t toLong,\r
- converterFromLong_t fromLong, const wxString &name ) :\r
- wxTypeInfo( kind, to, from, name ), m_toLong( toLong ), m_fromLong( fromLong )\r
- { \r
- wxASSERT_MSG( kind == wxT_ENUM || kind == wxT_SET,\r
- wxT("Illegal Kind for Enum Type")); \r
- m_enumInfo = enumInfo; \r
- }\r
-\r
-#if wxUSE_UNICODE\r
- wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,\r
- wxString2VariantFnc from, converterToLong_t toLong,\r
- converterFromLong_t fromLong, const char * name ) :\r
- wxTypeInfo( kind, to, from, name ), m_toLong( toLong ), m_fromLong( fromLong )\r
- {\r
- wxASSERT_MSG( kind == wxT_ENUM || kind == wxT_SET, \r
- wxT("Illegal Kind for Enum Type")); \r
- m_enumInfo = enumInfo; \r
- }\r
-#endif\r
- const wxEnumData* GetEnumData() const { return m_enumInfo; }\r
-\r
- // convert a wxVariantBase holding data of this type into a long\r
- void ConvertToLong( const wxVariantBase& data, long &result ) const\r
- { \r
- if( m_toLong ) \r
- (*m_toLong)( data, result ); \r
- else \r
- wxLogError( wxGetTranslation(_T("Long Conversions not supported")) ); \r
- }\r
-\r
- // convert a long into a wxVariantBase holding the corresponding data in this type\r
- void ConvertFromLong( long data, wxVariantBase &result ) const\r
- { \r
- if( m_fromLong ) \r
- (*m_fromLong)( data, result ); \r
- else \r
- wxLogError( wxGetTranslation(_T("Long Conversions not supported")) ); \r
- }\r
-\r
-private:\r
- converterToLong_t m_toLong;\r
- converterFromLong_t m_fromLong;\r
-\r
- wxEnumData *m_enumInfo; // Kind == wxT_ENUM or Kind == wxT_SET\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxClassTypeInfo : public wxTypeInfo\r
-{\r
-public:\r
- wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo, \r
- wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL, \r
- const wxString &name = wxEmptyString);\r
-\r
-#if wxUSE_UNICODE\r
- wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo, wxVariant2StringFnc to,\r
- wxString2VariantFnc from , const char *name );\r
-#endif\r
-\r
- const wxClassInfo *GetClassInfo() const { return m_classInfo; }\r
-\r
-private:\r
- wxClassInfo *m_classInfo; // Kind == wxT_OBJECT - could be NULL\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxCollectionTypeInfo : public wxTypeInfo\r
-{\r
-public:\r
- wxCollectionTypeInfo( const wxString &elementName, wxVariant2StringFnc to,\r
- wxString2VariantFnc from , const wxString &name) :\r
- wxTypeInfo( wxT_COLLECTION, to, from, name )\r
- { m_elementTypeName = elementName; m_elementType = NULL; }\r
-\r
-#if wxUSE_UNICODE\r
- wxCollectionTypeInfo( const char *elementName, wxVariant2StringFnc to, \r
- wxString2VariantFnc from , const char *name ) :\r
- wxTypeInfo( wxT_COLLECTION, to, from, name )\r
- { m_elementTypeName = wxString::FromAscii( elementName ); m_elementType = NULL; }\r
-#endif\r
-\r
- const wxTypeInfo* GetElementType() const\r
- {\r
- if ( m_elementType == NULL )\r
- m_elementType = wxTypeInfo::FindType( m_elementTypeName );\r
- return m_elementType; \r
- }\r
-\r
-private:\r
- mutable wxTypeInfo * m_elementType;\r
- wxString m_elementTypeName;\r
-};\r
-\r
-class WXDLLIMPEXP_BASE wxEventSourceTypeInfo : public wxTypeInfo\r
-{\r
-public:\r
- wxEventSourceTypeInfo( int eventType, wxClassInfo* eventClass, \r
- wxVariant2StringFnc to = NULL, \r
- wxString2VariantFnc from = NULL );\r
- wxEventSourceTypeInfo( int eventType, int lastEventType, wxClassInfo* eventClass, \r
- wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL );\r
-\r
- int GetEventType() const { return m_eventType; }\r
- int GetLastEventType() const { return m_lastEventType; }\r
- const wxClassInfo* GetEventClass() const { return m_eventClass; }\r
-\r
-private:\r
- const wxClassInfo *m_eventClass; // (extended will merge into classinfo)\r
- int m_eventType;\r
- int m_lastEventType;\r
-};\r
-\r
-template<typename T> const wxTypeInfo* wxGetTypeInfo( T * ) \\r
- { return wxTypeInfo::FindType(typeid(T).name()); }\r
-\r
-// this macro is for usage with custom, non-object derived classes and structs, \r
-// wxPoint is such a custom type\r
-\r
-#if wxUSE_FUNC_TEMPLATE_POINTER\r
- #define wxCUSTOM_TYPE_INFO( e, toString, fromString ) \\r
- wxCustomTypeInfo s_typeInfo##e(typeid(e).name(), &toString, &fromString);\r
-#else\r
- #define wxCUSTOM_TYPE_INFO( e, toString, fromString ) \\r
- void ToString##e( const wxVariantBase& data, wxString &result ) \\r
- { toString(data, result); } \\r
- void FromString##e( const wxString& data, wxVariantBase &result ) \\r
- { fromString(data, result); } \\r
- wxCustomTypeInfo s_typeInfo##e(typeid(e).name(), \\r
- &ToString##e, &FromString##e);\r
-#endif\r
-\r
-#define wxCOLLECTION_TYPE_INFO( element, collection ) \\r
- wxCollectionTypeInfo s_typeInfo##collection( typeid(element).name(), \\r
- NULL, NULL, typeid(collection).name() );\r
-\r
-// sometimes a compiler invents specializations that are nowhere called, \r
-// use this macro to satisfy the refs, currently we don't have to play \r
-// tricks, but if we will have to according to the compiler, we will use \r
-// that macro for that\r
-\r
-#define wxILLEGAL_TYPE_SPECIALIZATION( a )\r
-\r
-#endif // wxUSE_EXTENDED_RTTI\r
-#endif // _XTITYPES_H_\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/xtitypes.h
+// Purpose: enum, set, basic types support
+// Author: Stefan Csomor
+// Modified by: Francesco Montorsi
+// Created: 27/07/03
+// RCS-ID: $Id$
+// Copyright: (c) 1997 Julian Smart
+// (c) 2003 Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _XTITYPES_H_
+#define _XTITYPES_H_
+
+#include "wx/defs.h"
+
+#if wxUSE_EXTENDED_RTTI
+
+#include "wx/string.h"
+#include "wx/hashmap.h"
+#include "wx/arrstr.h"
+#include "wx/flags.h"
+#include "wx/intl.h"
+#include "wx/log.h"
+#include <typeinfo>
+
+class WXDLLIMPEXP_BASE wxClassInfo;
+
+// ----------------------------------------------------------------------------
+// Enum Support
+//
+// In the header files XTI requires no change from pure c++ code, however in the
+// implementation, an enum needs to be enumerated eg:
+//
+// wxBEGIN_ENUM( wxFlavor )
+// wxENUM_MEMBER( Vanilla )
+// wxENUM_MEMBER( Chocolate )
+// wxENUM_MEMBER( Strawberry )
+// wxEND_ENUM( wxFlavor )
+// ----------------------------------------------------------------------------
+
+struct WXDLLIMPEXP_BASE wxEnumMemberData
+{
+ const wxChar* m_name;
+ int m_value;
+};
+
+class WXDLLIMPEXP_BASE wxEnumData
+{
+public:
+ wxEnumData( wxEnumMemberData* data );
+
+ // returns true if the member has been found and sets the int value
+ // pointed to accordingly (if ptr != null )
+ // if not found returns false, value left unchanged
+ bool HasEnumMemberValue( const wxChar *name, int *value = NULL ) const;
+
+ // returns the value of the member, if not found in debug mode an
+ // assert is issued, in release 0 is returned
+ int GetEnumMemberValue(const wxChar *name ) const;
+
+ // returns the name of the enum member having the passed in value
+ // returns an emtpy string if not found
+ const wxChar *GetEnumMemberName(int value) const;
+
+ // returns the number of members in this enum
+ int GetEnumCount() const { return m_count; }
+
+ // returns the value of the nth member
+ int GetEnumMemberValueByIndex( int n ) const;
+
+ // returns the value of the nth member
+ const wxChar *GetEnumMemberNameByIndex( int n ) const;
+
+private:
+ wxEnumMemberData *m_members;
+ int m_count;
+};
+
+#define wxBEGIN_ENUM( e ) \
+ wxEnumMemberData s_enumDataMembers##e[] = {
+
+#define wxENUM_MEMBER( v ) { wxT(#v), v },
+
+#define wxEND_ENUM( e ) \
+ { NULL, 0 } }; \
+ wxEnumData s_enumData##e( s_enumDataMembers##e ); \
+ wxEnumData *wxGetEnumData(e) { return &s_enumData##e; } \
+ template<> void wxStringReadValue(const wxString& s, e &data ) \
+ { data = (e) s_enumData##e.GetEnumMemberValue(s); } \
+ template<> void wxStringWriteValue(wxString &s, const e &data ) \
+ { s = s_enumData##e.GetEnumMemberName((int)data); } \
+ void FromLong##e( long data, wxVariantBase& result ) \
+ { result = wxVariantBase((e)data); } \
+ void ToLong##e( const wxVariantBase& data, long &result ) \
+ { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, e); } \
+ \
+ wxTO_STRING_IMP( e ) \
+ wxFROM_STRING_IMP( e ) \
+ wxEnumTypeInfo s_typeInfo##e(wxT_ENUM, &s_enumData##e, \
+ &wxTO_STRING( e ), &wxFROM_STRING( e ), &ToLong##e, \
+ &FromLong##e, typeid(e).name() );
+
+
+// ----------------------------------------------------------------------------
+// Set Support
+//
+// in the header :
+//
+// enum wxFlavor
+// {
+// Vanilla,
+// Chocolate,
+// Strawberry,
+// };
+//
+// typedef wxBitset<wxFlavor> wxCoupe;
+//
+// in the implementation file :
+//
+// wxBEGIN_ENUM( wxFlavor )
+// wxENUM_MEMBER( Vanilla )
+// wxENUM_MEMBER( Chocolate )
+// wxENUM_MEMBER( Strawberry )
+// wxEND_ENUM( wxFlavor )
+//
+// wxIMPLEMENT_SET_STREAMING( wxCoupe, wxFlavor )
+//
+// implementation note: no partial specialization for streaming, but a delegation
+// to a different class
+//
+// ----------------------------------------------------------------------------
+
+// in order to remove dependancy on string tokenizer
+void WXDLLIMPEXP_BASE wxSetStringToArray( const wxString &s, wxArrayString &array );
+
+template<typename e>
+void wxSetFromString(const wxString &s, wxBitset<e> &data )
+{
+ wxEnumData* edata = wxGetEnumData((e) 0);
+ data.reset();
+
+ wxArrayString array;
+ wxSetStringToArray( s, array );
+ wxString flag;
+ for ( int i = 0; i < array.Count(); ++i )
+ {
+ flag = array[i];
+ int ivalue;
+ if ( edata->HasEnumMemberValue( flag, &ivalue ) )
+ {
+ data.set( (e) ivalue );
+ }
+ }
+}
+
+template<typename e>
+void wxSetToString( wxString &s, const wxBitset<e> &data )
+{
+ wxEnumData* edata = wxGetEnumData((e) 0);
+ int count = edata->GetEnumCount();
+ int i;
+ s.Clear();
+ for ( i = 0; i < count; i++ )
+ {
+ e value = (e) edata->GetEnumMemberValueByIndex(i);
+ if ( data.test( value ) )
+ {
+ // this could also be done by the templated calls
+ if ( !s.empty() )
+ s += wxT("|");
+ s += edata->GetEnumMemberNameByIndex(i);
+ }
+ }
+}
+
+#define wxIMPLEMENT_SET_STREAMING(SetName,e) \
+ template<> void wxStringReadValue(const wxString &s, wxBitset<e> &data ) \
+ { wxSetFromString( s, data ); } \
+ template<> void wxStringWriteValue( wxString &s, const wxBitset<e> &data ) \
+ { wxSetToString( s, data ); } \
+ void FromLong##SetName( long data, wxVariantBase& result ) \
+ { result = wxVariantBase(SetName((unsigned long)data)); } \
+ void ToLong##SetName( const wxVariantBase& data, long &result ) \
+ { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, SetName).to_ulong(); } \
+ wxTO_STRING_IMP( SetName ) \
+ wxFROM_STRING_IMP( SetName ) \
+ wxEnumTypeInfo s_typeInfo##SetName(wxT_SET, &s_enumData##e, \
+ &wxTO_STRING( SetName ), &wxFROM_STRING( SetName ), \
+ &ToLong##SetName, &FromLong##SetName, typeid(SetName).name() );
+
+template<typename e>
+void wxFlagsFromString(const wxString &s, e &data )
+{
+ wxEnumData* edata = wxGetEnumData((e*) 0);
+ data.m_data = 0;
+
+ wxArrayString array;
+ wxSetStringToArray( s, array );
+ wxString flag;
+ for ( size_t i = 0; i < array.Count(); ++i )
+ {
+ flag = array[i];
+ int ivalue;
+ if ( edata->HasEnumMemberValue( flag, &ivalue ) )
+ {
+ data.m_data |= ivalue;
+ }
+ }
+}
+
+template<typename e>
+void wxFlagsToString( wxString &s, const e& data )
+{
+ wxEnumData* edata = wxGetEnumData((e*) 0);
+ int count = edata->GetEnumCount();
+ int i;
+ s.Clear();
+ long dataValue = data.m_data;
+ for ( i = 0; i < count; i++ )
+ {
+ int value = edata->GetEnumMemberValueByIndex(i);
+ // make this to allow for multi-bit constants to work
+ if ( value && ( dataValue & value ) == value )
+ {
+ // clear the flags we just set
+ dataValue &= ~value;
+ // this could also be done by the templated calls
+ if ( !s.empty() )
+ s +=wxT("|");
+ s += edata->GetEnumMemberNameByIndex(i);
+ }
+ }
+}
+
+#define wxBEGIN_FLAGS( e ) \
+ wxEnumMemberData s_enumDataMembers##e[] = {
+
+#define wxFLAGS_MEMBER( v ) { wxT(#v), v },
+
+#define wxEND_FLAGS( e ) \
+ { NULL, 0 } }; \
+ wxEnumData s_enumData##e( s_enumDataMembers##e ); \
+ wxEnumData *wxGetEnumData(e*) { return &s_enumData##e; } \
+ template<> void wxStringReadValue(const wxString &s, e &data ) \
+ { wxFlagsFromString<e>( s, data ); } \
+ template<> void wxStringWriteValue( wxString &s, const e& data ) \
+ { wxFlagsToString<e>( s, data ); } \
+ void FromLong##e( long data, wxVariantBase& result ) \
+ { result = wxVariantBase(e(data)); } \
+ void ToLong##e( const wxVariantBase& data, long &result ) \
+ { result = (long) data.wxTEMPLATED_MEMBER_CALL(Get, e).m_data; } \
+ wxTO_STRING_IMP( e ) \
+ wxFROM_STRING_IMP( e ) \
+ wxEnumTypeInfo s_typeInfo##e(wxT_SET, &s_enumData##e, \
+ &wxTO_STRING( e ), &wxFROM_STRING( e ), &ToLong##e, \
+ &FromLong##e, typeid(e).name() );
+
+// ----------------------------------------------------------------------------
+// Type Information
+// ----------------------------------------------------------------------------
+
+// All data exposed by the RTTI is characterized using the following classes.
+// The first characterization is done by wxTypeKind. All enums up to and including
+// wxT_CUSTOM represent so called simple types. These cannot be divided any further.
+// They can be converted to and from wxStrings, that's all.
+// Other wxTypeKinds can instead be splitted recursively into smaller parts until
+// the simple types are reached.
+
+enum wxTypeKind
+{
+ wxT_VOID = 0, // unknown type
+ wxT_BOOL,
+ wxT_CHAR,
+ wxT_UCHAR,
+ wxT_INT,
+ wxT_UINT,
+ wxT_LONG,
+ wxT_ULONG,
+ wxT_FLOAT,
+ wxT_DOUBLE,
+ wxT_STRING, // must be wxString
+ wxT_SET, // must be wxBitset<> template
+ wxT_ENUM,
+ wxT_CUSTOM, // user defined type (e.g. wxPoint)
+
+ wxT_LAST_SIMPLE_TYPE_KIND = wxT_CUSTOM,
+
+ wxT_OBJECT_PTR, // object reference
+ wxT_OBJECT, // embedded object
+ wxT_COLLECTION, // collection
+
+ wxT_DELEGATE, // for connecting against an event source
+
+ wxT_LAST_TYPE_KIND = wxT_DELEGATE // sentinel for bad data, asserts, debugging
+};
+
+class WXDLLIMPEXP_BASE wxVariantBase;
+class WXDLLIMPEXP_BASE wxTypeInfo;
+
+WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxTypeInfo*, wxTypeInfoMap, class WXDLLIMPEXP_BASE );
+
+class WXDLLIMPEXP_BASE wxTypeInfo
+{
+public:
+ typedef void (*wxVariant2StringFnc)( const wxVariantBase& data, wxString &result );
+ typedef void (*wxString2VariantFnc)( const wxString& data, wxVariantBase &result );
+
+ wxTypeInfo(wxTypeKind kind,
+ wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL,
+ const wxString &name = wxEmptyString):
+ m_toString(to), m_fromString(from), m_kind(kind), m_name(name)
+ {
+ Register();
+ }
+#if wxUSE_UNICODE
+ wxTypeInfo(wxTypeKind kind,
+ wxVariant2StringFnc to, wxString2VariantFnc from,
+ const char *name):
+ m_toString(to), m_fromString(from), m_kind(kind),
+ m_name(wxString::FromAscii(name))
+ {
+ Register();
+ }
+#endif
+
+ virtual ~wxTypeInfo()
+ {
+ Unregister();
+ }
+
+ // return the kind of this type (wxT_... constants)
+ wxTypeKind GetKind() const { return m_kind; }
+
+ // returns the unique name of this type
+ const wxString& GetTypeName() const { return m_name; }
+
+ // is this type a delegate type
+ bool IsDelegateType() const { return m_kind == wxT_DELEGATE; }
+
+ // is this type a custom type
+ bool IsCustomType() const { return m_kind == wxT_CUSTOM; }
+
+ // is this type an object type
+ bool IsObjectType() const { return m_kind == wxT_OBJECT || m_kind == wxT_OBJECT_PTR; }
+
+ // can the content of this type be converted to and from strings ?
+ bool HasStringConverters() const { return m_toString != NULL && m_fromString != NULL; }
+
+ // convert a wxVariantBase holding data of this type into a string
+ void ConvertToString( const wxVariantBase& data, wxString &result ) const
+ {
+ if ( m_toString )
+ (*m_toString)( data, result );
+ else
+ wxLogError( wxGetTranslation(_T("String conversions not supported")) );
+ }
+
+ // convert a string into a wxVariantBase holding the corresponding data in this type
+ void ConvertFromString( const wxString& data, wxVariantBase &result ) const
+ {
+ if( m_fromString )
+ (*m_fromString)( data, result );
+ else
+ wxLogError( wxGetTranslation(_T("String conversions not supported")) );
+ }
+
+ // statics:
+
+#if wxUSE_UNICODE
+ static wxTypeInfo *FindType(const char *typeName)
+ { return FindType( wxString::FromAscii(typeName) ); }
+#endif
+ static wxTypeInfo *FindType(const wxChar *typeName);
+ static wxTypeInfo *FindType(const wxString& typeName)
+ {
+#if wxUSE_UNICODE
+ return FindType( typeName.wchar_str() );
+#else
+ return FindType( typeName.char_str() );
+#endif
+ }
+
+private:
+ void Register();
+ void Unregister();
+
+ wxVariant2StringFnc m_toString;
+ wxString2VariantFnc m_fromString;
+
+ wxTypeKind m_kind;
+ wxString m_name;
+
+ // the static list of all types we know about
+ static wxTypeInfoMap* ms_typeTable;
+};
+
+class WXDLLIMPEXP_BASE wxBuiltInTypeInfo : public wxTypeInfo
+{
+public:
+ wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to = NULL,
+ wxString2VariantFnc from = NULL,
+ const wxString &name = wxEmptyString ) :
+ wxTypeInfo( kind, to, from, name )
+ { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }
+
+#if wxUSE_UNICODE
+ wxBuiltInTypeInfo( wxTypeKind kind, wxVariant2StringFnc to,
+ wxString2VariantFnc from , const char *name ) :
+ wxTypeInfo( kind, to, from, name )
+ { wxASSERT_MSG( GetKind() < wxT_SET, wxT("Illegal Kind for Base Type") ); }
+#endif
+};
+
+class WXDLLIMPEXP_BASE wxCustomTypeInfo : public wxTypeInfo
+{
+public:
+ wxCustomTypeInfo( const wxString &name, wxVariant2StringFnc to,
+ wxString2VariantFnc from ) :
+ wxTypeInfo( wxT_CUSTOM, to, from, name )
+ {}
+
+#if wxUSE_UNICODE
+ wxCustomTypeInfo( const char *name , wxVariant2StringFnc to,
+ wxString2VariantFnc from ) :
+ wxTypeInfo( wxT_CUSTOM, to, from, name )
+ {}
+#endif
+};
+
+class WXDLLIMPEXP_BASE wxEnumTypeInfo : public wxTypeInfo
+{
+public:
+ typedef void (*converterToLong_t)( const wxVariantBase& data, long &result );
+ typedef void (*converterFromLong_t)( long data, wxVariantBase &result );
+
+ wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,
+ wxString2VariantFnc from, converterToLong_t toLong,
+ converterFromLong_t fromLong, const wxString &name ) :
+ wxTypeInfo( kind, to, from, name ), m_toLong( toLong ), m_fromLong( fromLong )
+ {
+ wxASSERT_MSG( kind == wxT_ENUM || kind == wxT_SET,
+ wxT("Illegal Kind for Enum Type"));
+ m_enumInfo = enumInfo;
+ }
+
+#if wxUSE_UNICODE
+ wxEnumTypeInfo( wxTypeKind kind, wxEnumData* enumInfo, wxVariant2StringFnc to,
+ wxString2VariantFnc from, converterToLong_t toLong,
+ converterFromLong_t fromLong, const char * name ) :
+ wxTypeInfo( kind, to, from, name ), m_toLong( toLong ), m_fromLong( fromLong )
+ {
+ wxASSERT_MSG( kind == wxT_ENUM || kind == wxT_SET,
+ wxT("Illegal Kind for Enum Type"));
+ m_enumInfo = enumInfo;
+ }
+#endif
+ const wxEnumData* GetEnumData() const { return m_enumInfo; }
+
+ // convert a wxVariantBase holding data of this type into a long
+ void ConvertToLong( const wxVariantBase& data, long &result ) const
+ {
+ if( m_toLong )
+ (*m_toLong)( data, result );
+ else
+ wxLogError( wxGetTranslation(_T("Long Conversions not supported")) );
+ }
+
+ // convert a long into a wxVariantBase holding the corresponding data in this type
+ void ConvertFromLong( long data, wxVariantBase &result ) const
+ {
+ if( m_fromLong )
+ (*m_fromLong)( data, result );
+ else
+ wxLogError( wxGetTranslation(_T("Long Conversions not supported")) );
+ }
+
+private:
+ converterToLong_t m_toLong;
+ converterFromLong_t m_fromLong;
+
+ wxEnumData *m_enumInfo; // Kind == wxT_ENUM or Kind == wxT_SET
+};
+
+class WXDLLIMPEXP_BASE wxClassTypeInfo : public wxTypeInfo
+{
+public:
+ wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo,
+ wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL,
+ const wxString &name = wxEmptyString);
+
+#if wxUSE_UNICODE
+ wxClassTypeInfo( wxTypeKind kind, wxClassInfo* classInfo, wxVariant2StringFnc to,
+ wxString2VariantFnc from , const char *name );
+#endif
+
+ const wxClassInfo *GetClassInfo() const { return m_classInfo; }
+
+private:
+ wxClassInfo *m_classInfo; // Kind == wxT_OBJECT - could be NULL
+};
+
+class WXDLLIMPEXP_BASE wxCollectionTypeInfo : public wxTypeInfo
+{
+public:
+ wxCollectionTypeInfo( const wxString &elementName, wxVariant2StringFnc to,
+ wxString2VariantFnc from , const wxString &name) :
+ wxTypeInfo( wxT_COLLECTION, to, from, name )
+ { m_elementTypeName = elementName; m_elementType = NULL; }
+
+#if wxUSE_UNICODE
+ wxCollectionTypeInfo( const char *elementName, wxVariant2StringFnc to,
+ wxString2VariantFnc from , const char *name ) :
+ wxTypeInfo( wxT_COLLECTION, to, from, name )
+ { m_elementTypeName = wxString::FromAscii( elementName ); m_elementType = NULL; }
+#endif
+
+ const wxTypeInfo* GetElementType() const
+ {
+ if ( m_elementType == NULL )
+ m_elementType = wxTypeInfo::FindType( m_elementTypeName );
+ return m_elementType;
+ }
+
+private:
+ mutable wxTypeInfo * m_elementType;
+ wxString m_elementTypeName;
+};
+
+class WXDLLIMPEXP_BASE wxEventSourceTypeInfo : public wxTypeInfo
+{
+public:
+ wxEventSourceTypeInfo( int eventType, wxClassInfo* eventClass,
+ wxVariant2StringFnc to = NULL,
+ wxString2VariantFnc from = NULL );
+ wxEventSourceTypeInfo( int eventType, int lastEventType, wxClassInfo* eventClass,
+ wxVariant2StringFnc to = NULL, wxString2VariantFnc from = NULL );
+
+ int GetEventType() const { return m_eventType; }
+ int GetLastEventType() const { return m_lastEventType; }
+ const wxClassInfo* GetEventClass() const { return m_eventClass; }
+
+private:
+ const wxClassInfo *m_eventClass; // (extended will merge into classinfo)
+ int m_eventType;
+ int m_lastEventType;
+};
+
+template<typename T> const wxTypeInfo* wxGetTypeInfo( T * ) \
+ { return wxTypeInfo::FindType(typeid(T).name()); }
+
+// this macro is for usage with custom, non-object derived classes and structs,
+// wxPoint is such a custom type
+
+#if wxUSE_FUNC_TEMPLATE_POINTER
+ #define wxCUSTOM_TYPE_INFO( e, toString, fromString ) \
+ wxCustomTypeInfo s_typeInfo##e(typeid(e).name(), &toString, &fromString);
+#else
+ #define wxCUSTOM_TYPE_INFO( e, toString, fromString ) \
+ void ToString##e( const wxVariantBase& data, wxString &result ) \
+ { toString(data, result); } \
+ void FromString##e( const wxString& data, wxVariantBase &result ) \
+ { fromString(data, result); } \
+ wxCustomTypeInfo s_typeInfo##e(typeid(e).name(), \
+ &ToString##e, &FromString##e);
+#endif
+
+#define wxCOLLECTION_TYPE_INFO( element, collection ) \
+ wxCollectionTypeInfo s_typeInfo##collection( typeid(element).name(), \
+ NULL, NULL, typeid(collection).name() );
+
+// sometimes a compiler invents specializations that are nowhere called,
+// use this macro to satisfy the refs, currently we don't have to play
+// tricks, but if we will have to according to the compiler, we will use
+// that macro for that
+
+#define wxILLEGAL_TYPE_SPECIALIZATION( a )
+
+#endif // wxUSE_EXTENDED_RTTI
+#endif // _XTITYPES_H_
// Author: Francesco Montorsi
// Modified by:
// Created: 03/06/2007 14:49:55
-// RCS-ID: $Id: classlist.cpp 48186 2007-08-19 19:59:54Z FM $
+// RCS-ID: $Id$
// Copyright: (c) 2007 Francesco Montorsi
// Licence: wxWidgets license
/////////////////////////////////////////////////////////////////////////////
// Author: Francesco Montorsi
// Modified by:
// Created: 03/06/2007 14:49:55
-// RCS-ID: $Id: classlist.h 47845 2007-08-01 12:53:50Z FM $
+// RCS-ID: $Id$
// Copyright: (c) 2007 Francesco Montorsi
// Licence: wxWidgets license
////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/xtistrm.cpp\r
-// Purpose: streaming runtime metadata information\r
-// Author: Stefan Csomor\r
-// Modified by:\r
-// Created: 27/07/03\r
-// RCS-ID: $Id: xtistrm.cpp 47828 2007-07-31 19:26:56Z FM $\r
-// Copyright: (c) 2003 Stefan Csomor\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#include "wx/xtistrm.h"\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/object.h"\r
- #include "wx/hash.h"\r
- #include "wx/event.h"\r
-#endif\r
-\r
-#include <map>\r
-#include <vector>\r
-#include <string>\r
-using namespace std;\r
-\r
-#include "wx/tokenzr.h"\r
-#include "wx/txtstrm.h"\r
-#include "codereadercallback.h"\r
-\r
-#if !wxUSE_EXTENDED_RTTI\r
- #error This sample requires XTI (eXtended RTTI) enabled\r
-#endif\r
-\r
-// ----------------------------------------------------------------------------\r
-// wxObjectCodeReaderCallback - depersisting to code\r
-// ----------------------------------------------------------------------------\r
-\r
-struct wxObjectCodeReaderCallback::wxObjectCodeReaderCallbackInternal\r
-{\r
-#if wxUSE_UNICODE\r
- map<int,wstring> m_objectNames;\r
-#else\r
- map<int,string> m_objectNames;\r
-#endif\r
-\r
- void SetObjectName(int objectID, const wxString &name )\r
- {\r
- if ( m_objectNames.find(objectID) != m_objectNames.end() )\r
- {\r
- wxLogError( _("Passing a already registered object to SetObjectName") );\r
- return ;\r
- }\r
- m_objectNames[objectID] = (const wxChar *)name;\r
- }\r
-\r
- wxString GetObjectName( int objectID )\r
- {\r
- if ( objectID == wxNullObjectID )\r
- return wxT("NULL");\r
-\r
- if ( m_objectNames.find(objectID) == m_objectNames.end() )\r
- {\r
- wxLogError( _("Passing an unkown object to GetObject") );\r
- return wxEmptyString;\r
- }\r
- return wxString( m_objectNames[objectID].c_str() );\r
- }\r
-};\r
-\r
-wxObjectCodeReaderCallback::wxObjectCodeReaderCallback(wxTextOutputStream *out)\r
-: m_fp(out)\r
-{\r
- m_data = new wxObjectCodeReaderCallbackInternal;\r
-}\r
-\r
-wxObjectCodeReaderCallback::~wxObjectCodeReaderCallback()\r
-{\r
- delete m_data;\r
-}\r
-\r
-void wxObjectCodeReaderCallback::AllocateObject(int objectID, wxClassInfo *classInfo,\r
- wxVariantBaseArray &WXUNUSED(metadata))\r
-{\r
- wxString objectName = wxString::Format( wxT("LocalObject_%d"), objectID );\r
- m_fp->WriteString( wxString::Format( wxT("\t%s *%s = new %s;\n"),\r
- classInfo->GetClassName(),\r
- objectName.c_str(),\r
- classInfo->GetClassName()) );\r
- m_data->SetObjectName( objectID, objectName );\r
-}\r
-\r
-void wxObjectCodeReaderCallback::DestroyObject(int objectID, wxClassInfo *WXUNUSED(classInfo))\r
-{\r
- m_fp->WriteString( wxString::Format( wxT("\tdelete %s;\n"),\r
- m_data->GetObjectName( objectID).c_str() ) );\r
-}\r
-\r
-wxString wxObjectCodeReaderCallback::ValueAsCode( const wxVariantBase ¶m )\r
-{\r
- wxString value;\r
- const wxTypeInfo* type = param.GetTypeInfo();\r
- if ( type->GetKind() == wxT_CUSTOM )\r
- {\r
- const wxCustomTypeInfo* cti = wx_dynamic_cast(const wxCustomTypeInfo*, type);\r
- if ( cti )\r
- {\r
- value.Printf( wxT("%s(%s)"), cti->GetTypeName().c_str(),\r
- param.GetAsString().c_str() );\r
- }\r
- else\r
- {\r
- wxLogError ( _("Internal error, illegal wxCustomTypeInfo") );\r
- }\r
- }\r
- else if ( type->GetKind() == wxT_STRING )\r
- {\r
- value.Printf( wxT("\"%s\""),param.GetAsString().c_str() );\r
- }\r
- else\r
- {\r
- value.Printf( wxT("%s"), param.GetAsString().c_str() );\r
- }\r
- return value;\r
-}\r
-\r
-void wxObjectCodeReaderCallback::CreateObject(int objectID,\r
- const wxClassInfo *WXUNUSED(classInfo),\r
- int paramCount,\r
- wxVariantBase *params,\r
- int *objectIDValues,\r
- const wxClassInfo **WXUNUSED(objectClassInfos),\r
- wxVariantBaseArray &WXUNUSED(metadata)\r
- )\r
-{\r
- int i;\r
- m_fp->WriteString( wxString::Format( wxT("\t%s->Create("), \r
- m_data->GetObjectName(objectID).c_str() ) );\r
- for (i = 0; i < paramCount; i++)\r
- {\r
- if ( objectIDValues[i] != wxInvalidObjectID )\r
- {\r
- wxString str = \r
- wxString::Format( wxT("%s"), \r
- m_data->GetObjectName( objectIDValues[i] ).c_str() );\r
- m_fp->WriteString( str );\r
- }\r
- else\r
- {\r
- m_fp->WriteString( \r
- wxString::Format( wxT("%s"), ValueAsCode(params[i]).c_str() ) );\r
- }\r
- if (i < paramCount - 1)\r
- m_fp->WriteString( wxT(", "));\r
- }\r
- m_fp->WriteString( wxT(");\n") );\r
-}\r
-\r
-void wxObjectCodeReaderCallback::ConstructObject(int objectID,\r
- const wxClassInfo *classInfo,\r
- int paramCount,\r
- wxVariantBase *params,\r
- int *objectIDValues,\r
- const wxClassInfo **WXUNUSED(objectClassInfos),\r
- wxVariantBaseArray &WXUNUSED(metadata)\r
- )\r
-{\r
- wxString objectName = wxString::Format( wxT("LocalObject_%d"), objectID );\r
- m_fp->WriteString( wxString::Format( wxT("\t%s *%s = new %s("),\r
- classInfo->GetClassName(),\r
- objectName.c_str(),\r
- classInfo->GetClassName()) );\r
- m_data->SetObjectName( objectID, objectName );\r
-\r
- int i;\r
- for (i = 0; i < paramCount; i++)\r
- {\r
- if ( objectIDValues[i] != wxInvalidObjectID )\r
- m_fp->WriteString( wxString::Format( wxT("%s"), \r
- m_data->GetObjectName( objectIDValues[i] ).c_str() ) );\r
- else\r
- {\r
- m_fp->WriteString( \r
- wxString::Format( wxT("%s"), ValueAsCode(params[i]).c_str() ) );\r
- }\r
- if (i < paramCount - 1)\r
- m_fp->WriteString( wxT(", ") );\r
- }\r
- m_fp->WriteString( wxT(");\n") );\r
-}\r
-\r
-void wxObjectCodeReaderCallback::SetProperty(int objectID,\r
- const wxClassInfo *WXUNUSED(classInfo),\r
- const wxPropertyInfo* propertyInfo,\r
- const wxVariantBase &value)\r
-{\r
- m_fp->WriteString( wxString::Format( wxT("\t%s->%s(%s);\n"),\r
- m_data->GetObjectName(objectID).c_str(),\r
- propertyInfo->GetAccessor()->GetSetterName().c_str(),\r
- ValueAsCode(value).c_str()) );\r
-}\r
-\r
-void wxObjectCodeReaderCallback::SetPropertyAsObject(int objectID,\r
- const wxClassInfo *WXUNUSED(classInfo),\r
- const wxPropertyInfo* propertyInfo,\r
- int valueObjectId)\r
-{\r
- if ( propertyInfo->GetTypeInfo()->GetKind() == wxT_OBJECT )\r
- m_fp->WriteString( wxString::Format( wxT("\t%s->%s(*%s);\n"),\r
- m_data->GetObjectName(objectID).c_str(),\r
- propertyInfo->GetAccessor()->GetSetterName().c_str(),\r
- m_data->GetObjectName( valueObjectId).c_str() ) );\r
- else\r
- m_fp->WriteString( wxString::Format( wxT("\t%s->%s(%s);\n"),\r
- m_data->GetObjectName(objectID).c_str(),\r
- propertyInfo->GetAccessor()->GetSetterName().c_str(),\r
- m_data->GetObjectName( valueObjectId).c_str() ) );\r
-}\r
-\r
-void wxObjectCodeReaderCallback::AddToPropertyCollection( int objectID,\r
- const wxClassInfo *WXUNUSED(classInfo),\r
- const wxPropertyInfo* propertyInfo,\r
- const wxVariantBase &value)\r
-{\r
- m_fp->WriteString( wxString::Format( wxT("\t%s->%s(%s);\n"),\r
- m_data->GetObjectName(objectID).c_str(),\r
- propertyInfo->GetAccessor()->GetAdderName().c_str(),\r
- ValueAsCode(value).c_str()) );\r
-}\r
-\r
-// sets the corresponding property (value is an object)\r
-void wxObjectCodeReaderCallback::\r
- AddToPropertyCollectionAsObject(int WXUNUSED(objectID),\r
- const wxClassInfo *WXUNUSED(classInfo),\r
- const wxPropertyInfo* WXUNUSED(propertyInfo),\r
- int WXUNUSED(valueObjectId))\r
-{\r
- // TODO\r
-}\r
-\r
-void wxObjectCodeReaderCallback::SetConnect(int eventSourceObjectID,\r
- const wxClassInfo *WXUNUSED(eventSourceClassInfo),\r
- const wxPropertyInfo *delegateInfo,\r
- const wxClassInfo *eventSinkClassInfo,\r
- const wxHandlerInfo* handlerInfo,\r
- int eventSinkObjectID )\r
-{\r
- wxString ehsource = m_data->GetObjectName( eventSourceObjectID );\r
- wxString ehsink = m_data->GetObjectName(eventSinkObjectID);\r
- wxString ehsinkClass = eventSinkClassInfo->GetClassName();\r
- const wxEventSourceTypeInfo *delegateTypeInfo = \r
- wx_dynamic_cast(const wxEventSourceTypeInfo*, delegateInfo->GetTypeInfo());\r
- if ( delegateTypeInfo )\r
- {\r
- int eventType = delegateTypeInfo->GetEventType();\r
- wxString handlerName = handlerInfo->GetName();\r
-\r
- wxString code =\r
- wxString::Format( \r
- wxT("\t%s->Connect( %s->GetId(), %d, ")\r
- wxT("(wxObjectEventFunction)(wxEventFunction) & %s::%s, NULL, %s );"),\r
- ehsource.c_str(), ehsource.c_str(), eventType, ehsinkClass.c_str(),\r
- handlerName.c_str(), ehsink.c_str() );\r
-\r
- m_fp->WriteString( code );\r
- }\r
- else\r
- {\r
- wxLogError(_("delegate has no type info"));\r
- }\r
-}\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/xtistrm.cpp
+// Purpose: streaming runtime metadata information
+// Author: Stefan Csomor
+// Modified by:
+// Created: 27/07/03
+// RCS-ID: $Id$
+// Copyright: (c) 2003 Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#include "wx/xtistrm.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/object.h"
+ #include "wx/hash.h"
+ #include "wx/event.h"
+#endif
+
+#include <map>
+#include <vector>
+#include <string>
+using namespace std;
+
+#include "wx/tokenzr.h"
+#include "wx/txtstrm.h"
+#include "codereadercallback.h"
+
+#if !wxUSE_EXTENDED_RTTI
+ #error This sample requires XTI (eXtended RTTI) enabled
+#endif
+
+// ----------------------------------------------------------------------------
+// wxObjectCodeReaderCallback - depersisting to code
+// ----------------------------------------------------------------------------
+
+struct wxObjectCodeReaderCallback::wxObjectCodeReaderCallbackInternal
+{
+#if wxUSE_UNICODE
+ map<int,wstring> m_objectNames;
+#else
+ map<int,string> m_objectNames;
+#endif
+
+ void SetObjectName(int objectID, const wxString &name )
+ {
+ if ( m_objectNames.find(objectID) != m_objectNames.end() )
+ {
+ wxLogError( _("Passing a already registered object to SetObjectName") );
+ return ;
+ }
+ m_objectNames[objectID] = (const wxChar *)name;
+ }
+
+ wxString GetObjectName( int objectID )
+ {
+ if ( objectID == wxNullObjectID )
+ return wxT("NULL");
+
+ if ( m_objectNames.find(objectID) == m_objectNames.end() )
+ {
+ wxLogError( _("Passing an unkown object to GetObject") );
+ return wxEmptyString;
+ }
+ return wxString( m_objectNames[objectID].c_str() );
+ }
+};
+
+wxObjectCodeReaderCallback::wxObjectCodeReaderCallback(wxTextOutputStream *out)
+: m_fp(out)
+{
+ m_data = new wxObjectCodeReaderCallbackInternal;
+}
+
+wxObjectCodeReaderCallback::~wxObjectCodeReaderCallback()
+{
+ delete m_data;
+}
+
+void wxObjectCodeReaderCallback::AllocateObject(int objectID, wxClassInfo *classInfo,
+ wxVariantBaseArray &WXUNUSED(metadata))
+{
+ wxString objectName = wxString::Format( wxT("LocalObject_%d"), objectID );
+ m_fp->WriteString( wxString::Format( wxT("\t%s *%s = new %s;\n"),
+ classInfo->GetClassName(),
+ objectName.c_str(),
+ classInfo->GetClassName()) );
+ m_data->SetObjectName( objectID, objectName );
+}
+
+void wxObjectCodeReaderCallback::DestroyObject(int objectID, wxClassInfo *WXUNUSED(classInfo))
+{
+ m_fp->WriteString( wxString::Format( wxT("\tdelete %s;\n"),
+ m_data->GetObjectName( objectID).c_str() ) );
+}
+
+wxString wxObjectCodeReaderCallback::ValueAsCode( const wxVariantBase ¶m )
+{
+ wxString value;
+ const wxTypeInfo* type = param.GetTypeInfo();
+ if ( type->GetKind() == wxT_CUSTOM )
+ {
+ const wxCustomTypeInfo* cti = wx_dynamic_cast(const wxCustomTypeInfo*, type);
+ if ( cti )
+ {
+ value.Printf( wxT("%s(%s)"), cti->GetTypeName().c_str(),
+ param.GetAsString().c_str() );
+ }
+ else
+ {
+ wxLogError ( _("Internal error, illegal wxCustomTypeInfo") );
+ }
+ }
+ else if ( type->GetKind() == wxT_STRING )
+ {
+ value.Printf( wxT("\"%s\""),param.GetAsString().c_str() );
+ }
+ else
+ {
+ value.Printf( wxT("%s"), param.GetAsString().c_str() );
+ }
+ return value;
+}
+
+void wxObjectCodeReaderCallback::CreateObject(int objectID,
+ const wxClassInfo *WXUNUSED(classInfo),
+ int paramCount,
+ wxVariantBase *params,
+ int *objectIDValues,
+ const wxClassInfo **WXUNUSED(objectClassInfos),
+ wxVariantBaseArray &WXUNUSED(metadata)
+ )
+{
+ int i;
+ m_fp->WriteString( wxString::Format( wxT("\t%s->Create("),
+ m_data->GetObjectName(objectID).c_str() ) );
+ for (i = 0; i < paramCount; i++)
+ {
+ if ( objectIDValues[i] != wxInvalidObjectID )
+ {
+ wxString str =
+ wxString::Format( wxT("%s"),
+ m_data->GetObjectName( objectIDValues[i] ).c_str() );
+ m_fp->WriteString( str );
+ }
+ else
+ {
+ m_fp->WriteString(
+ wxString::Format( wxT("%s"), ValueAsCode(params[i]).c_str() ) );
+ }
+ if (i < paramCount - 1)
+ m_fp->WriteString( wxT(", "));
+ }
+ m_fp->WriteString( wxT(");\n") );
+}
+
+void wxObjectCodeReaderCallback::ConstructObject(int objectID,
+ const wxClassInfo *classInfo,
+ int paramCount,
+ wxVariantBase *params,
+ int *objectIDValues,
+ const wxClassInfo **WXUNUSED(objectClassInfos),
+ wxVariantBaseArray &WXUNUSED(metadata)
+ )
+{
+ wxString objectName = wxString::Format( wxT("LocalObject_%d"), objectID );
+ m_fp->WriteString( wxString::Format( wxT("\t%s *%s = new %s("),
+ classInfo->GetClassName(),
+ objectName.c_str(),
+ classInfo->GetClassName()) );
+ m_data->SetObjectName( objectID, objectName );
+
+ int i;
+ for (i = 0; i < paramCount; i++)
+ {
+ if ( objectIDValues[i] != wxInvalidObjectID )
+ m_fp->WriteString( wxString::Format( wxT("%s"),
+ m_data->GetObjectName( objectIDValues[i] ).c_str() ) );
+ else
+ {
+ m_fp->WriteString(
+ wxString::Format( wxT("%s"), ValueAsCode(params[i]).c_str() ) );
+ }
+ if (i < paramCount - 1)
+ m_fp->WriteString( wxT(", ") );
+ }
+ m_fp->WriteString( wxT(");\n") );
+}
+
+void wxObjectCodeReaderCallback::SetProperty(int objectID,
+ const wxClassInfo *WXUNUSED(classInfo),
+ const wxPropertyInfo* propertyInfo,
+ const wxVariantBase &value)
+{
+ m_fp->WriteString( wxString::Format( wxT("\t%s->%s(%s);\n"),
+ m_data->GetObjectName(objectID).c_str(),
+ propertyInfo->GetAccessor()->GetSetterName().c_str(),
+ ValueAsCode(value).c_str()) );
+}
+
+void wxObjectCodeReaderCallback::SetPropertyAsObject(int objectID,
+ const wxClassInfo *WXUNUSED(classInfo),
+ const wxPropertyInfo* propertyInfo,
+ int valueObjectId)
+{
+ if ( propertyInfo->GetTypeInfo()->GetKind() == wxT_OBJECT )
+ m_fp->WriteString( wxString::Format( wxT("\t%s->%s(*%s);\n"),
+ m_data->GetObjectName(objectID).c_str(),
+ propertyInfo->GetAccessor()->GetSetterName().c_str(),
+ m_data->GetObjectName( valueObjectId).c_str() ) );
+ else
+ m_fp->WriteString( wxString::Format( wxT("\t%s->%s(%s);\n"),
+ m_data->GetObjectName(objectID).c_str(),
+ propertyInfo->GetAccessor()->GetSetterName().c_str(),
+ m_data->GetObjectName( valueObjectId).c_str() ) );
+}
+
+void wxObjectCodeReaderCallback::AddToPropertyCollection( int objectID,
+ const wxClassInfo *WXUNUSED(classInfo),
+ const wxPropertyInfo* propertyInfo,
+ const wxVariantBase &value)
+{
+ m_fp->WriteString( wxString::Format( wxT("\t%s->%s(%s);\n"),
+ m_data->GetObjectName(objectID).c_str(),
+ propertyInfo->GetAccessor()->GetAdderName().c_str(),
+ ValueAsCode(value).c_str()) );
+}
+
+// sets the corresponding property (value is an object)
+void wxObjectCodeReaderCallback::
+ AddToPropertyCollectionAsObject(int WXUNUSED(objectID),
+ const wxClassInfo *WXUNUSED(classInfo),
+ const wxPropertyInfo* WXUNUSED(propertyInfo),
+ int WXUNUSED(valueObjectId))
+{
+ // TODO
+}
+
+void wxObjectCodeReaderCallback::SetConnect(int eventSourceObjectID,
+ const wxClassInfo *WXUNUSED(eventSourceClassInfo),
+ const wxPropertyInfo *delegateInfo,
+ const wxClassInfo *eventSinkClassInfo,
+ const wxHandlerInfo* handlerInfo,
+ int eventSinkObjectID )
+{
+ wxString ehsource = m_data->GetObjectName( eventSourceObjectID );
+ wxString ehsink = m_data->GetObjectName(eventSinkObjectID);
+ wxString ehsinkClass = eventSinkClassInfo->GetClassName();
+ const wxEventSourceTypeInfo *delegateTypeInfo =
+ wx_dynamic_cast(const wxEventSourceTypeInfo*, delegateInfo->GetTypeInfo());
+ if ( delegateTypeInfo )
+ {
+ int eventType = delegateTypeInfo->GetEventType();
+ wxString handlerName = handlerInfo->GetName();
+
+ wxString code =
+ wxString::Format(
+ wxT("\t%s->Connect( %s->GetId(), %d, ")
+ wxT("(wxObjectEventFunction)(wxEventFunction) & %s::%s, NULL, %s );"),
+ ehsource.c_str(), ehsource.c_str(), eventType, ehsinkClass.c_str(),
+ handlerName.c_str(), ehsink.c_str() );
+
+ m_fp->WriteString( code );
+ }
+ else
+ {
+ wxLogError(_("delegate has no type info"));
+ }
+}
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: wx/xtistrm.h\r
-// Purpose: streaming runtime metadata information (extended class info)\r
-// Author: Stefan Csomor\r
-// Modified by:\r
-// Created: 27/07/03\r
-// RCS-ID: $Id: xtistrm.h 47827 2007-07-31 19:25:09Z FM $\r
-// Copyright: (c) 2003 Stefan Csomor\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-#ifndef _CODEDEPERSISTER_\r
-#define _CODEDEPERSISTER_\r
-\r
-#include "wx/defs.h"\r
-\r
-/*\r
-wxObjectCodeReaderCallback implements the callbacks that will depersist\r
-an object into a C++ initialization function.\r
-*/\r
-\r
-class WXDLLIMPEXP_BASE wxTextOutputStream;\r
-\r
-class WXDLLIMPEXP_BASE wxObjectCodeReaderCallback: public wxObjectWriterCallback\r
-{\r
-private:\r
- struct wxObjectCodeReaderCallbackInternal;\r
- wxObjectCodeReaderCallbackInternal * m_data;\r
- wxTextOutputStream *m_fp;\r
- wxString ValueAsCode( const wxVariantBase ¶m );\r
-\r
-public:\r
- wxObjectCodeReaderCallback(wxTextOutputStream *out);\r
- virtual ~wxObjectCodeReaderCallback();\r
-\r
- // allocate the new object on the heap, that object will have the passed in ID\r
- virtual void AllocateObject(int objectID, wxClassInfo *classInfo,\r
- wxVariantBaseArray &metadata);\r
-\r
- // initialize the already allocated object having the ID objectID \r
- // with the Create method creation parameters which are objects are \r
- // having their Ids passed in objectIDValues having objectId <> wxInvalidObjectID\r
-\r
- virtual void CreateObject(int objectID,\r
- const wxClassInfo *classInfo,\r
- int paramCount,\r
- wxVariantBase *variantValues,\r
- int *objectIDValues,\r
- const wxClassInfo **objectClassInfos,\r
- wxVariantBaseArray &metadata\r
- );\r
-\r
- // construct the new object on the heap, that object will have the \r
- // passed in ID (for objects that don't support allocate-create type \r
- // of creation) creation parameters which are objects are having their \r
- // Ids passed in objectIDValues having objectId <> wxInvalidObjectID\r
-\r
- virtual void ConstructObject(int objectID,\r
- const wxClassInfo *classInfo,\r
- int paramCount,\r
- wxVariantBase *VariantValues,\r
- int *objectIDValues,\r
- const wxClassInfo **objectClassInfos,\r
- wxVariantBaseArray &metadata);\r
-\r
- // destroy the heap-allocated object having the ID objectID, this may \r
- // be used if an object is embedded in another object and set via value \r
- // semantics, so the intermediate object can be destroyed after safely\r
- virtual void DestroyObject(int objectID, wxClassInfo *classInfo);\r
-\r
- // set the corresponding property\r
- virtual void SetProperty(int objectID,\r
- const wxClassInfo *classInfo,\r
- const wxPropertyInfo* propertyInfo,\r
- const wxVariantBase &variantValue);\r
-\r
- // sets the corresponding property (value is an object)\r
- virtual void SetPropertyAsObject(int objectId,\r
- const wxClassInfo *classInfo,\r
- const wxPropertyInfo* propertyInfo,\r
- int valueObjectId);\r
-\r
- // adds an element to a property collection\r
- virtual void AddToPropertyCollection( int objectID,\r
- const wxClassInfo *classInfo,\r
- const wxPropertyInfo* propertyInfo,\r
- const wxVariantBase &VariantValue);\r
-\r
- // sets the corresponding property (value is an object)\r
- virtual void AddToPropertyCollectionAsObject(int objectID,\r
- const wxClassInfo *classInfo,\r
- const wxPropertyInfo* propertyInfo,\r
- int valueObjectId);\r
-\r
- // sets the corresponding event handler\r
- virtual void SetConnect(int eventSourceObjectID,\r
- const wxClassInfo *eventSourceClassInfo,\r
- const wxPropertyInfo *delegateInfo,\r
- const wxClassInfo *eventSinkClassInfo,\r
- const wxHandlerInfo* handlerInfo,\r
- int eventSinkObjectID );\r
-};\r
-\r
-#endif\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: wx/xtistrm.h
+// Purpose: streaming runtime metadata information (extended class info)
+// Author: Stefan Csomor
+// Modified by:
+// Created: 27/07/03
+// RCS-ID: $Id$
+// Copyright: (c) 2003 Stefan Csomor
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _CODEDEPERSISTER_
+#define _CODEDEPERSISTER_
+
+#include "wx/defs.h"
+
+/*
+wxObjectCodeReaderCallback implements the callbacks that will depersist
+an object into a C++ initialization function.
+*/
+
+class WXDLLIMPEXP_BASE wxTextOutputStream;
+
+class WXDLLIMPEXP_BASE wxObjectCodeReaderCallback: public wxObjectWriterCallback
+{
+private:
+ struct wxObjectCodeReaderCallbackInternal;
+ wxObjectCodeReaderCallbackInternal * m_data;
+ wxTextOutputStream *m_fp;
+ wxString ValueAsCode( const wxVariantBase ¶m );
+
+public:
+ wxObjectCodeReaderCallback(wxTextOutputStream *out);
+ virtual ~wxObjectCodeReaderCallback();
+
+ // allocate the new object on the heap, that object will have the passed in ID
+ virtual void AllocateObject(int objectID, wxClassInfo *classInfo,
+ wxVariantBaseArray &metadata);
+
+ // initialize the already allocated object having the ID objectID
+ // with the Create method creation parameters which are objects are
+ // having their Ids passed in objectIDValues having objectId <> wxInvalidObjectID
+
+ virtual void CreateObject(int objectID,
+ const wxClassInfo *classInfo,
+ int paramCount,
+ wxVariantBase *variantValues,
+ int *objectIDValues,
+ const wxClassInfo **objectClassInfos,
+ wxVariantBaseArray &metadata
+ );
+
+ // construct the new object on the heap, that object will have the
+ // passed in ID (for objects that don't support allocate-create type
+ // of creation) creation parameters which are objects are having their
+ // Ids passed in objectIDValues having objectId <> wxInvalidObjectID
+
+ virtual void ConstructObject(int objectID,
+ const wxClassInfo *classInfo,
+ int paramCount,
+ wxVariantBase *VariantValues,
+ int *objectIDValues,
+ const wxClassInfo **objectClassInfos,
+ wxVariantBaseArray &metadata);
+
+ // destroy the heap-allocated object having the ID objectID, this may
+ // be used if an object is embedded in another object and set via value
+ // semantics, so the intermediate object can be destroyed after safely
+ virtual void DestroyObject(int objectID, wxClassInfo *classInfo);
+
+ // set the corresponding property
+ virtual void SetProperty(int objectID,
+ const wxClassInfo *classInfo,
+ const wxPropertyInfo* propertyInfo,
+ const wxVariantBase &variantValue);
+
+ // sets the corresponding property (value is an object)
+ virtual void SetPropertyAsObject(int objectId,
+ const wxClassInfo *classInfo,
+ const wxPropertyInfo* propertyInfo,
+ int valueObjectId);
+
+ // adds an element to a property collection
+ virtual void AddToPropertyCollection( int objectID,
+ const wxClassInfo *classInfo,
+ const wxPropertyInfo* propertyInfo,
+ const wxVariantBase &VariantValue);
+
+ // sets the corresponding property (value is an object)
+ virtual void AddToPropertyCollectionAsObject(int objectID,
+ const wxClassInfo *classInfo,
+ const wxPropertyInfo* propertyInfo,
+ int valueObjectId);
+
+ // sets the corresponding event handler
+ virtual void SetConnect(int eventSourceObjectID,
+ const wxClassInfo *eventSourceClassInfo,
+ const wxPropertyInfo *delegateInfo,
+ const wxClassInfo *eventSinkClassInfo,
+ const wxHandlerInfo* handlerInfo,
+ int eventSinkObjectID );
+};
+
+#endif
<?xml version="1.0" ?>
-<!-- $Id: xti.bkl 48186 2007-08-19 19:59:54Z FM $ -->
+<!-- $Id$ -->
<makefile>
// Author: Stefan Csomor, Francesco Montorsi
// Modified by:
// Created: 13/5/2007
-// RCS-ID: $Id: xti.cpp 48407 2007-08-26 23:17:23Z FM $
+// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor, Francesco Montorsi
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/bmpbtncmn.cpp\r
-// Purpose: wxBitmapButton common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: bmpbuttn.cpp 45338 2007-04-08 22:18:35Z VZ $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_BMPBUTTON\r
-\r
-#include "wx/bmpbuttn.h"\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/log.h"\r
- #include "wx/dcmemory.h"\r
- #include "wx/image.h"\r
-#endif\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxBitmapButtonStyle )\r
-wxBEGIN_FLAGS( wxBitmapButtonStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxBU_AUTODRAW)\r
- wxFLAGS_MEMBER(wxBU_LEFT)\r
- wxFLAGS_MEMBER(wxBU_RIGHT)\r
- wxFLAGS_MEMBER(wxBU_TOP)\r
- wxFLAGS_MEMBER(wxBU_BOTTOM)\r
-wxEND_FLAGS( wxBitmapButtonStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxBitmapButton, wxButton, "wx/bmpbuttn.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxBitmapButton)\r
- wxPROPERTY_FLAGS( WindowStyle, wxBitmapButtonStyle, long, \\r
- SetWindowStyleFlag, GetWindowStyleFlag, \\r
- wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), \\r
- wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxBitmapButton)\r
-\r
-wxCONSTRUCTOR_5( wxBitmapButton, wxWindow*, Parent, wxWindowID, Id, \\r
- wxBitmap, Bitmap, wxPoint, Position, wxSize, Size )\r
-\r
-/*\r
-TODO PROPERTIES :\r
-\r
-long "style" , wxBU_AUTODRAW\r
-bool "default" , 0\r
-bitmap "selected" ,\r
-bitmap "focus" ,\r
-bitmap "disabled" ,\r
-*/\r
-\r
-#endif // wxUSE_BMPBUTTON\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/bmpbtncmn.cpp
+// Purpose: wxBitmapButton common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_BMPBUTTON
+
+#include "wx/bmpbuttn.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/log.h"
+ #include "wx/dcmemory.h"
+ #include "wx/image.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxBitmapButtonStyle )
+wxBEGIN_FLAGS( wxBitmapButtonStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxBU_AUTODRAW)
+ wxFLAGS_MEMBER(wxBU_LEFT)
+ wxFLAGS_MEMBER(wxBU_RIGHT)
+ wxFLAGS_MEMBER(wxBU_TOP)
+ wxFLAGS_MEMBER(wxBU_BOTTOM)
+wxEND_FLAGS( wxBitmapButtonStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxBitmapButton, wxButton, "wx/bmpbuttn.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxBitmapButton)
+ wxPROPERTY_FLAGS( WindowStyle, wxBitmapButtonStyle, long, \
+ SetWindowStyleFlag, GetWindowStyleFlag, \
+ wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), \
+ wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxBitmapButton)
+
+wxCONSTRUCTOR_5( wxBitmapButton, wxWindow*, Parent, wxWindowID, Id, \
+ wxBitmap, Bitmap, wxPoint, Position, wxSize, Size )
+
+/*
+TODO PROPERTIES :
+
+long "style" , wxBU_AUTODRAW
+bool "default" , 0
+bitmap "selected" ,
+bitmap "focus" ,
+bitmap "disabled" ,
+*/
+
+#endif // wxUSE_BMPBUTTON
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/checkboxcmn.cpp\r
-// Purpose: wxCheckBox common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: checkbox.cpp 45492 2007-04-16 00:53:05Z VZ $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_CHECKBOX\r
-\r
-#include "wx/checkbox.h"\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxCheckBoxStyle )\r
-wxBEGIN_FLAGS( wxCheckBoxStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxNO_BORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
-wxEND_FLAGS( wxCheckBoxStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxCheckBox, wxControl, "wx/checkbox.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxCheckBox)\r
- wxEVENT_PROPERTY( Click, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEvent )\r
-\r
- wxPROPERTY( Font, wxFont, SetFont, GetFont, wxEMPTY_PARAMETER_VALUE, \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Label,wxString, SetLabel, GetLabel, wxString(), \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Value,bool, SetValue, GetValue, wxEMPTY_PARAMETER_VALUE, \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
-\r
- wxPROPERTY_FLAGS( WindowStyle, wxCheckBoxStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxCheckBox)\r
-\r
-wxCONSTRUCTOR_6( wxCheckBox, wxWindow*, Parent, wxWindowID, Id, \\r
- wxString, Label, wxPoint, Position, wxSize, Size, long, WindowStyle )\r
-\r
-\r
-#endif // wxUSE_CHECKBOX\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/checkboxcmn.cpp
+// Purpose: wxCheckBox common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_CHECKBOX
+
+#include "wx/checkbox.h"
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxCheckBoxStyle )
+wxBEGIN_FLAGS( wxCheckBoxStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxNO_BORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+wxEND_FLAGS( wxCheckBoxStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxCheckBox, wxControl, "wx/checkbox.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxCheckBox)
+ wxEVENT_PROPERTY( Click, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEvent )
+
+ wxPROPERTY( Font, wxFont, SetFont, GetFont, wxEMPTY_PARAMETER_VALUE, \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Label,wxString, SetLabel, GetLabel, wxString(), \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Value,bool, SetValue, GetValue, wxEMPTY_PARAMETER_VALUE, \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+
+ wxPROPERTY_FLAGS( WindowStyle, wxCheckBoxStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxCheckBox)
+
+wxCONSTRUCTOR_6( wxCheckBox, wxWindow*, Parent, wxWindowID, Id, \
+ wxString, Label, wxPoint, Position, wxSize, Size, long, WindowStyle )
+
+
+#endif // wxUSE_CHECKBOX
-///////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/checklstcmn.cpp\r
-// Purpose: wxCheckListBox common code\r
-// Author: Vadim Zeitlin\r
-// Modified by:\r
-// Created: 16.11.97\r
-// RCS-ID: $Id: checklst.cpp 45515 2007-04-17 01:19:43Z VZ $\r
-// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>\r
-// Licence: wxWindows licence\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_CHECKLISTBOX\r
-\r
-#include "wx/checklst.h"\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/object.h"\r
- #include "wx/colour.h"\r
- #include "wx/font.h"\r
- #include "wx/bitmap.h"\r
- #include "wx/window.h"\r
- #include "wx/listbox.h"\r
- #include "wx/dcmemory.h"\r
- #include "wx/settings.h"\r
- #include "wx/log.h"\r
-#endif\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxCheckListBoxStyle )\r
-wxBEGIN_FLAGS( wxCheckListBoxStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxLB_SINGLE)\r
- wxFLAGS_MEMBER(wxLB_MULTIPLE)\r
- wxFLAGS_MEMBER(wxLB_EXTENDED)\r
- wxFLAGS_MEMBER(wxLB_HSCROLL)\r
- wxFLAGS_MEMBER(wxLB_ALWAYS_SB)\r
- wxFLAGS_MEMBER(wxLB_NEEDED_SB)\r
- wxFLAGS_MEMBER(wxLB_SORT)\r
- wxFLAGS_MEMBER(wxLB_OWNERDRAW)\r
-\r
-wxEND_FLAGS( wxCheckListBoxStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxCheckListBox, wxListBox, "wx/checklst.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxCheckListBox)\r
- wxEVENT_PROPERTY( Toggle, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEvent )\r
- wxPROPERTY_FLAGS( WindowStyle, wxCheckListBoxStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, wxLB_OWNERDRAW /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxCheckListBox)\r
-\r
-wxCONSTRUCTOR_4( wxCheckListBox, wxWindow*, Parent, wxWindowID, Id, \\r
- wxPoint, Position, wxSize, Size )\r
-\r
-\r
-#endif\r
+///////////////////////////////////////////////////////////////////////////////
+// Name: src/common/checklstcmn.cpp
+// Purpose: wxCheckListBox common code
+// Author: Vadim Zeitlin
+// Modified by:
+// Created: 16.11.97
+// RCS-ID: $Id$
+// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_CHECKLISTBOX
+
+#include "wx/checklst.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/object.h"
+ #include "wx/colour.h"
+ #include "wx/font.h"
+ #include "wx/bitmap.h"
+ #include "wx/window.h"
+ #include "wx/listbox.h"
+ #include "wx/dcmemory.h"
+ #include "wx/settings.h"
+ #include "wx/log.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxCheckListBoxStyle )
+wxBEGIN_FLAGS( wxCheckListBoxStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxLB_SINGLE)
+ wxFLAGS_MEMBER(wxLB_MULTIPLE)
+ wxFLAGS_MEMBER(wxLB_EXTENDED)
+ wxFLAGS_MEMBER(wxLB_HSCROLL)
+ wxFLAGS_MEMBER(wxLB_ALWAYS_SB)
+ wxFLAGS_MEMBER(wxLB_NEEDED_SB)
+ wxFLAGS_MEMBER(wxLB_SORT)
+ wxFLAGS_MEMBER(wxLB_OWNERDRAW)
+
+wxEND_FLAGS( wxCheckListBoxStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxCheckListBox, wxListBox, "wx/checklst.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxCheckListBox)
+ wxEVENT_PROPERTY( Toggle, wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, wxCommandEvent )
+ wxPROPERTY_FLAGS( WindowStyle, wxCheckListBoxStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, wxLB_OWNERDRAW /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxCheckListBox)
+
+wxCONSTRUCTOR_4( wxCheckListBox, wxWindow*, Parent, wxWindowID, Id, \
+ wxPoint, Position, wxSize, Size )
+
+
+#endif
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/dirctrlcmn.cpp\r
-// Purpose: wxGenericDirCtrl common code\r
-// Author: Harm van der Heijden, Robert Roebling, Julian Smart\r
-// Modified by:\r
-// Created: 12/12/98\r
-// RCS-ID: $Id: dirctrlg.cpp 45395 2007-04-11 00:23:19Z VZ $\r
-// Copyright: (c) Harm van der Heijden, Robert Roebling and Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_DIRDLG || wxUSE_FILEDLG\r
-\r
-#include "wx/generic/dirctrlg.h"\r
-\r
-//-----------------------------------------------------------------------------\r
-// XTI\r
-//-----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxGenericDirCtrlStyle )\r
-wxBEGIN_FLAGS( wxGenericDirCtrlStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxDIRCTRL_DIR_ONLY)\r
- wxFLAGS_MEMBER(wxDIRCTRL_3D_INTERNAL)\r
- wxFLAGS_MEMBER(wxDIRCTRL_SELECT_FIRST)\r
- wxFLAGS_MEMBER(wxDIRCTRL_SHOW_FILTERS)\r
-wxEND_FLAGS( wxGenericDirCtrlStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxGenericDirCtrl, wxControl, "wx/dirctrl.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxGenericDirCtrl)\r
- wxHIDE_PROPERTY( Children )\r
-\r
- wxPROPERTY( DefaultPath, wxString, SetDefaultPath, GetDefaultPath, \\r
- wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Filter, wxString, SetFilter, GetFilter, wxEMPTY_PARAMETER_VALUE, \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group") )\r
- wxPROPERTY( DefaultFilter, int, SetFilterIndex, GetFilterIndex, \\r
- wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), wxT("group") )\r
-\r
- wxPROPERTY_FLAGS( WindowStyle, wxGenericDirCtrlStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0, wxT("Helpstring"), \\r
- wxT("group") )\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxGenericDirCtrl)\r
-\r
-wxCONSTRUCTOR_8( wxGenericDirCtrl, wxWindow*, Parent, wxWindowID, Id, \\r
- wxString, DefaultPath, wxPoint, Position, wxSize, Size, \\r
- long, WindowStyle, wxString, Filter, int, DefaultFilter )\r
-\r
-#endif // wxUSE_DIRDLG || wxUSE_FILEDLG\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/dirctrlcmn.cpp
+// Purpose: wxGenericDirCtrl common code
+// Author: Harm van der Heijden, Robert Roebling, Julian Smart
+// Modified by:
+// Created: 12/12/98
+// RCS-ID: $Id$
+// Copyright: (c) Harm van der Heijden, Robert Roebling and Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_DIRDLG || wxUSE_FILEDLG
+
+#include "wx/generic/dirctrlg.h"
+
+//-----------------------------------------------------------------------------
+// XTI
+//-----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxGenericDirCtrlStyle )
+wxBEGIN_FLAGS( wxGenericDirCtrlStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxDIRCTRL_DIR_ONLY)
+ wxFLAGS_MEMBER(wxDIRCTRL_3D_INTERNAL)
+ wxFLAGS_MEMBER(wxDIRCTRL_SELECT_FIRST)
+ wxFLAGS_MEMBER(wxDIRCTRL_SHOW_FILTERS)
+wxEND_FLAGS( wxGenericDirCtrlStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxGenericDirCtrl, wxControl, "wx/dirctrl.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxGenericDirCtrl)
+ wxHIDE_PROPERTY( Children )
+
+ wxPROPERTY( DefaultPath, wxString, SetDefaultPath, GetDefaultPath, \
+ wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Filter, wxString, SetFilter, GetFilter, wxEMPTY_PARAMETER_VALUE, \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group") )
+ wxPROPERTY( DefaultFilter, int, SetFilterIndex, GetFilterIndex, \
+ wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), wxT("group") )
+
+ wxPROPERTY_FLAGS( WindowStyle, wxGenericDirCtrlStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0, wxT("Helpstring"), \
+ wxT("group") )
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxGenericDirCtrl)
+
+wxCONSTRUCTOR_8( wxGenericDirCtrl, wxWindow*, Parent, wxWindowID, Id, \
+ wxString, DefaultPath, wxPoint, Position, wxSize, Size, \
+ long, WindowStyle, wxString, Filter, int, DefaultFilter )
+
+#endif // wxUSE_DIRDLG || wxUSE_FILEDLG
-///////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/gridcmn.cpp\r
-// Purpose: wxGrid common code\r
-// Author: Michael Bedward (based on code by Julian Smart, Robin Dunn)\r
-// Modified by: Robin Dunn, Vadim Zeitlin, Santiago Palacios\r
-// Created: 1/08/1999\r
-// RCS-ID: $Id: grid.cpp 45814 2007-05-05 10:16:40Z RR $\r
-// Copyright: (c) Michael Bedward (mbedward@ozemail.com.au)\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// For compilers that support precompilation, includes "wx/wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_GRID\r
-\r
-#include "wx/grid.h"\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/utils.h"\r
- #include "wx/dcclient.h"\r
- #include "wx/settings.h"\r
- #include "wx/log.h"\r
- #include "wx/textctrl.h"\r
- #include "wx/checkbox.h"\r
- #include "wx/combobox.h"\r
- #include "wx/valtext.h"\r
- #include "wx/intl.h"\r
- #include "wx/math.h"\r
- #include "wx/listbox.h"\r
-#endif\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxGridStyle )\r
-wxBEGIN_FLAGS( wxGridStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB)\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-wxEND_FLAGS( wxGridStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxGrid, wxScrolledWindow, "wx/grid.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxGrid)\r
- wxHIDE_PROPERTY( Children )\r
- wxPROPERTY_FLAGS( WindowStyle, wxGridStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxGrid)\r
-\r
-wxCONSTRUCTOR_5( wxGrid, wxWindow*, Parent, wxWindowID, Id, wxPoint, Position, \\r
- wxSize, Size, long, WindowStyle )\r
-\r
-/*\r
- TODO : Expose more information of a list's layout, etc. via appropriate objects (e.g., NotebookPageInfo)\r
-*/\r
-\r
-#endif // wxUSE_GRID\r
+///////////////////////////////////////////////////////////////////////////
+// Name: src/common/gridcmn.cpp
+// Purpose: wxGrid common code
+// Author: Michael Bedward (based on code by Julian Smart, Robin Dunn)
+// Modified by: Robin Dunn, Vadim Zeitlin, Santiago Palacios
+// Created: 1/08/1999
+// RCS-ID: $Id$
+// Copyright: (c) Michael Bedward (mbedward@ozemail.com.au)
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_GRID
+
+#include "wx/grid.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/utils.h"
+ #include "wx/dcclient.h"
+ #include "wx/settings.h"
+ #include "wx/log.h"
+ #include "wx/textctrl.h"
+ #include "wx/checkbox.h"
+ #include "wx/combobox.h"
+ #include "wx/valtext.h"
+ #include "wx/intl.h"
+ #include "wx/math.h"
+ #include "wx/listbox.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxGridStyle )
+wxBEGIN_FLAGS( wxGridStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB)
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+wxEND_FLAGS( wxGridStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxGrid, wxScrolledWindow, "wx/grid.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxGrid)
+ wxHIDE_PROPERTY( Children )
+ wxPROPERTY_FLAGS( WindowStyle, wxGridStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxGrid)
+
+wxCONSTRUCTOR_5( wxGrid, wxWindow*, Parent, wxWindowID, Id, wxPoint, Position, \
+ wxSize, Size, long, WindowStyle )
+
+/*
+ TODO : Expose more information of a list's layout, etc. via appropriate objects (e.g., NotebookPageInfo)
+*/
+
+#endif // wxUSE_GRID
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/odcombocmn.cpp\r
-// Purpose: wxOwnerDrawnComboBox common code\r
-// Author: Jaakko Salli\r
-// Modified by:\r
-// Created: Apr-30-2006\r
-// RCS-ID: $Id: odcombo.cpp 45397 2007-04-11 10:32:01Z MBN $\r
-// Copyright: (c) 2005 Jaakko Salli\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_ODCOMBOBOX\r
-\r
-#include "wx/odcombo.h"\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/log.h"\r
- #include "wx/combobox.h"\r
- #include "wx/dcclient.h"\r
- #include "wx/settings.h"\r
- #include "wx/dialog.h"\r
-#endif\r
-\r
-#include "wx/combo.h"\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS2_XTI(wxOwnerDrawnComboBox, wxComboCtrl, \\r
- wxControlWithItems, "wx/odcombo.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxOwnerDrawnComboBox)\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxOwnerDrawnComboBox)\r
-\r
-wxCONSTRUCTOR_5( wxOwnerDrawnComboBox , wxWindow* , Parent , wxWindowID , \\r
- Id , wxString , Value , wxPoint , Position , wxSize , Size )\r
-\r
-#endif // wxUSE_ODCOMBOBOX\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/odcombocmn.cpp
+// Purpose: wxOwnerDrawnComboBox common code
+// Author: Jaakko Salli
+// Modified by:
+// Created: Apr-30-2006
+// RCS-ID: $Id$
+// Copyright: (c) 2005 Jaakko Salli
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_ODCOMBOBOX
+
+#include "wx/odcombo.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/log.h"
+ #include "wx/combobox.h"
+ #include "wx/dcclient.h"
+ #include "wx/settings.h"
+ #include "wx/dialog.h"
+#endif
+
+#include "wx/combo.h"
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxIMPLEMENT_DYNAMIC_CLASS2_XTI(wxOwnerDrawnComboBox, wxComboCtrl, \
+ wxControlWithItems, "wx/odcombo.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxOwnerDrawnComboBox)
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxOwnerDrawnComboBox)
+
+wxCONSTRUCTOR_5( wxOwnerDrawnComboBox , wxWindow* , Parent , wxWindowID , \
+ Id , wxString , Value , wxPoint , Position , wxSize , Size )
+
+#endif // wxUSE_ODCOMBOBOX
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/panelcmn.cpp\r
-// Purpose: wxPanel common code\r
-// Author: Julian Smart, Robert Roebling, Vadim Zeitlin\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: panelg.cpp 45056 2007-03-25 22:41:11Z VZ $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/object.h"\r
- #include "wx/font.h"\r
- #include "wx/colour.h"\r
- #include "wx/settings.h"\r
- #include "wx/log.h"\r
- #include "wx/panel.h"\r
- #include "wx/containr.h"\r
-#endif\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxPanelStyle )\r
-wxBEGIN_FLAGS( wxPanelStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB)\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-wxEND_FLAGS( wxPanelStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxPanel, wxWindow, "wx/panel.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxPanel)\r
- wxPROPERTY_FLAGS( WindowStyle, wxPanelStyle, long, \\r
- SetWindowStyleFlag, GetWindowStyleFlag, \\r
- wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
- // style wxTAB_TRAVERSAL\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxPanel)\r
-\r
-wxCONSTRUCTOR_6( wxPanel, wxWindow*, Parent, wxWindowID, Id, \\r
- wxPoint, Position, wxSize, Size, long, WindowStyle, \\r
- wxString, Name)\r
-\r
-\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/panelcmn.cpp
+// Purpose: wxPanel common code
+// Author: Julian Smart, Robert Roebling, Vadim Zeitlin
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/object.h"
+ #include "wx/font.h"
+ #include "wx/colour.h"
+ #include "wx/settings.h"
+ #include "wx/log.h"
+ #include "wx/panel.h"
+ #include "wx/containr.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxPanelStyle )
+wxBEGIN_FLAGS( wxPanelStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB)
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+wxEND_FLAGS( wxPanelStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxPanel, wxWindow, "wx/panel.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxPanel)
+ wxPROPERTY_FLAGS( WindowStyle, wxPanelStyle, long, \
+ SetWindowStyleFlag, GetWindowStyleFlag, \
+ wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+ // style wxTAB_TRAVERSAL
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxPanel)
+
+wxCONSTRUCTOR_6( wxPanel, wxWindow*, Parent, wxWindowID, Id, \
+ wxPoint, Position, wxSize, Size, long, WindowStyle, \
+ wxString, Name)
+
+
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/radiobtncmn.cpp\r
-// Purpose: wxRadioButton common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: radiobut.cpp 41144 2006-09-10 23:08:13Z VZ $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_RADIOBTN\r
-\r
-#include "wx/radiobut.h"\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/settings.h"\r
- #include "wx/dcscreen.h"\r
-#endif\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxRadioButtonStyle )\r
-wxBEGIN_FLAGS( wxRadioButtonStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxRB_GROUP)\r
-wxEND_FLAGS( wxRadioButtonStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxRadioButton, wxControl, "wx/radiobut.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxRadioButton)\r
- wxEVENT_PROPERTY( Click, wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEvent )\r
- wxPROPERTY( Font, wxFont, SetFont, GetFont , wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Label,wxString, SetLabel, GetLabel, wxString(), 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group") )\r
- wxPROPERTY( Value,bool, SetValue, GetValue, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group") )\r
- wxPROPERTY_FLAGS( WindowStyle, wxRadioButtonStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxRadioButton)\r
-\r
-wxCONSTRUCTOR_6( wxRadioButton, wxWindow*, Parent, wxWindowID, Id, \\r
- wxString, Label, wxPoint, Position, wxSize, Size, long, WindowStyle )\r
-\r
-\r
-#endif // wxUSE_RADIOBTN\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/radiobtncmn.cpp
+// Purpose: wxRadioButton common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_RADIOBTN
+
+#include "wx/radiobut.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/settings.h"
+ #include "wx/dcscreen.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxRadioButtonStyle )
+wxBEGIN_FLAGS( wxRadioButtonStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxRB_GROUP)
+wxEND_FLAGS( wxRadioButtonStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxRadioButton, wxControl, "wx/radiobut.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxRadioButton)
+ wxEVENT_PROPERTY( Click, wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEvent )
+ wxPROPERTY( Font, wxFont, SetFont, GetFont , wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Label,wxString, SetLabel, GetLabel, wxString(), 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group") )
+ wxPROPERTY( Value,bool, SetValue, GetValue, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group") )
+ wxPROPERTY_FLAGS( WindowStyle, wxRadioButtonStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxRadioButton)
+
+wxCONSTRUCTOR_6( wxRadioButton, wxWindow*, Parent, wxWindowID, Id, \
+ wxString, Label, wxPoint, Position, wxSize, Size, long, WindowStyle )
+
+
+#endif // wxUSE_RADIOBTN
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/scrolbarcmn.cpp\r
-// Purpose: wxScrollBar common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: scrolbar.cpp 39476 2006-05-30 13:43:18Z ABX $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_SCROLLBAR\r
-\r
-#include "wx/scrolbar.h"\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/utils.h"\r
- #include "wx/settings.h"\r
-#endif\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxScrollBarStyle )\r
-wxBEGIN_FLAGS( wxScrollBarStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxSB_HORIZONTAL)\r
- wxFLAGS_MEMBER(wxSB_VERTICAL)\r
-wxEND_FLAGS( wxScrollBarStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxScrollBar, wxControl, "wx/scrolbar.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxScrollBar)\r
- wxEVENT_RANGE_PROPERTY( Scroll, wxEVT_SCROLL_TOP, \\r
- wxEVT_SCROLL_CHANGED, wxScrollEvent )\r
-\r
- wxPROPERTY( ThumbPosition, int, SetThumbPosition, GetThumbPosition, 0, \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Range, int, SetRange, GetRange, 0, \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( ThumbSize, int, SetThumbSize, GetThumbSize, 0, \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( PageSize, int, SetPageSize, GetPageSize, 0, \\r
- 0 /*flags*/, wxT("Helpstring"), wxT("group"))\r
-\r
- wxPROPERTY_FLAGS( WindowStyle, wxScrollBarStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxScrollBar)\r
-\r
-wxCONSTRUCTOR_5( wxScrollBar, wxWindow*, Parent, wxWindowID, Id, \\r
- wxPoint, Position, wxSize, Size, long, WindowStyle )\r
-\r
-#endif // wxUSE_SCROLLBAR\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/scrolbarcmn.cpp
+// Purpose: wxScrollBar common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_SCROLLBAR
+
+#include "wx/scrolbar.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/utils.h"
+ #include "wx/settings.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxScrollBarStyle )
+wxBEGIN_FLAGS( wxScrollBarStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxSB_HORIZONTAL)
+ wxFLAGS_MEMBER(wxSB_VERTICAL)
+wxEND_FLAGS( wxScrollBarStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxScrollBar, wxControl, "wx/scrolbar.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxScrollBar)
+ wxEVENT_RANGE_PROPERTY( Scroll, wxEVT_SCROLL_TOP, \
+ wxEVT_SCROLL_CHANGED, wxScrollEvent )
+
+ wxPROPERTY( ThumbPosition, int, SetThumbPosition, GetThumbPosition, 0, \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Range, int, SetRange, GetRange, 0, \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( ThumbSize, int, SetThumbSize, GetThumbSize, 0, \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( PageSize, int, SetPageSize, GetPageSize, 0, \
+ 0 /*flags*/, wxT("Helpstring"), wxT("group"))
+
+ wxPROPERTY_FLAGS( WindowStyle, wxScrollBarStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxScrollBar)
+
+wxCONSTRUCTOR_5( wxScrollBar, wxWindow*, Parent, wxWindowID, Id, \
+ wxPoint, Position, wxSize, Size, long, WindowStyle )
+
+#endif // wxUSE_SCROLLBAR
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/slidercmn.cpp\r
-// Purpose: wxSlider common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: slider95.cpp 41054 2006-09-07 19:01:45Z ABX $\r
-// Copyright: (c) Julian Smart 1998\r
-// Vadim Zeitlin 2004\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_SLIDER\r
-\r
-#include "wx/slider.h"\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxSliderStyle )\r
-wxBEGIN_FLAGS( wxSliderStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxSL_HORIZONTAL)\r
- wxFLAGS_MEMBER(wxSL_VERTICAL)\r
- wxFLAGS_MEMBER(wxSL_AUTOTICKS)\r
- wxFLAGS_MEMBER(wxSL_LABELS)\r
- wxFLAGS_MEMBER(wxSL_LEFT)\r
- wxFLAGS_MEMBER(wxSL_TOP)\r
- wxFLAGS_MEMBER(wxSL_RIGHT)\r
- wxFLAGS_MEMBER(wxSL_BOTTOM)\r
- wxFLAGS_MEMBER(wxSL_BOTH)\r
- wxFLAGS_MEMBER(wxSL_SELRANGE)\r
- wxFLAGS_MEMBER(wxSL_INVERSE)\r
-wxEND_FLAGS( wxSliderStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxSlider, wxControl, "wx/slider.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxSlider)\r
- wxEVENT_RANGE_PROPERTY( Scroll, wxEVT_SCROLL_TOP, wxEVT_SCROLL_CHANGED, wxScrollEvent )\r
- wxEVENT_PROPERTY( Updated, wxEVT_COMMAND_SLIDER_UPDATED, wxCommandEvent )\r
-\r
- wxPROPERTY( Value, int, SetValue, GetValue, 0, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Minimum, int, SetMin, GetMin, 0, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Maximum, int, SetMax, GetMax, 0, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( PageSize, int, SetPageSize, GetLineSize, 1, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( LineSize, int, SetLineSize, GetLineSize, 1, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( ThumbLength, int, SetThumbLength, GetThumbLength, 1, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
-\r
- wxPROPERTY_FLAGS( WindowStyle, wxSliderStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxSlider)\r
-\r
-wxCONSTRUCTOR_8( wxSlider, wxWindow*, Parent, wxWindowID, Id, int, Value, \\r
- int, Minimum, int, Maximum, wxPoint, Position, wxSize, Size, \\r
- long, WindowStyle )\r
-\r
-#endif // wxUSE_SLIDER\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/slidercmn.cpp
+// Purpose: wxSlider common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart 1998
+// Vadim Zeitlin 2004
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_SLIDER
+
+#include "wx/slider.h"
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxSliderStyle )
+wxBEGIN_FLAGS( wxSliderStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxSL_HORIZONTAL)
+ wxFLAGS_MEMBER(wxSL_VERTICAL)
+ wxFLAGS_MEMBER(wxSL_AUTOTICKS)
+ wxFLAGS_MEMBER(wxSL_LABELS)
+ wxFLAGS_MEMBER(wxSL_LEFT)
+ wxFLAGS_MEMBER(wxSL_TOP)
+ wxFLAGS_MEMBER(wxSL_RIGHT)
+ wxFLAGS_MEMBER(wxSL_BOTTOM)
+ wxFLAGS_MEMBER(wxSL_BOTH)
+ wxFLAGS_MEMBER(wxSL_SELRANGE)
+ wxFLAGS_MEMBER(wxSL_INVERSE)
+wxEND_FLAGS( wxSliderStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxSlider, wxControl, "wx/slider.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxSlider)
+ wxEVENT_RANGE_PROPERTY( Scroll, wxEVT_SCROLL_TOP, wxEVT_SCROLL_CHANGED, wxScrollEvent )
+ wxEVENT_PROPERTY( Updated, wxEVT_COMMAND_SLIDER_UPDATED, wxCommandEvent )
+
+ wxPROPERTY( Value, int, SetValue, GetValue, 0, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Minimum, int, SetMin, GetMin, 0, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Maximum, int, SetMax, GetMax, 0, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( PageSize, int, SetPageSize, GetLineSize, 1, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( LineSize, int, SetLineSize, GetLineSize, 1, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( ThumbLength, int, SetThumbLength, GetThumbLength, 1, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+
+ wxPROPERTY_FLAGS( WindowStyle, wxSliderStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxSlider)
+
+wxCONSTRUCTOR_8( wxSlider, wxWindow*, Parent, wxWindowID, Id, int, Value, \
+ int, Minimum, int, Maximum, wxPoint, Position, wxSize, Size, \
+ long, WindowStyle )
+
+#endif // wxUSE_SLIDER
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/spinbtncmn.cpp\r
-// Purpose: wxSpinButton common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: spinbutt.cpp 44657 2007-03-07 22:56:34Z VZ $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#ifndef WX_PRECOMP\r
- #include "wx/app.h"\r
-#endif\r
-\r
-#if wxUSE_SPINBTN\r
-\r
-#include "wx/spinbutt.h"\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxSpinButtonStyle )\r
-wxBEGIN_FLAGS( wxSpinButtonStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxSP_HORIZONTAL)\r
- wxFLAGS_MEMBER(wxSP_VERTICAL)\r
- wxFLAGS_MEMBER(wxSP_ARROW_KEYS)\r
- wxFLAGS_MEMBER(wxSP_WRAP)\r
-wxEND_FLAGS( wxSpinButtonStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxSpinButton, wxControl, "wx/spinbut.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxSpinButton)\r
- wxEVENT_RANGE_PROPERTY( Spin, wxEVT_SCROLL_TOP, wxEVT_SCROLL_CHANGED, wxSpinEvent )\r
-\r
- wxPROPERTY( Value, int, SetValue, GetValue, 0, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Min, int, SetMin, GetMin, 0, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY( Max, int, SetMax, GetMax, 0, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
-\r
- wxPROPERTY_FLAGS( WindowStyle, wxSpinButtonStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxSpinButton)\r
-\r
-wxCONSTRUCTOR_5( wxSpinButton, wxWindow*, Parent, wxWindowID, Id, \\r
- wxPoint, Position, wxSize, Size, long, WindowStyle )\r
-\r
-IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent)\r
-\r
-\r
-#endif // wxUSE_SPINBTN\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/spinbtncmn.cpp
+// Purpose: wxSpinButton common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+ #include "wx/app.h"
+#endif
+
+#if wxUSE_SPINBTN
+
+#include "wx/spinbutt.h"
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxSpinButtonStyle )
+wxBEGIN_FLAGS( wxSpinButtonStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxSP_HORIZONTAL)
+ wxFLAGS_MEMBER(wxSP_VERTICAL)
+ wxFLAGS_MEMBER(wxSP_ARROW_KEYS)
+ wxFLAGS_MEMBER(wxSP_WRAP)
+wxEND_FLAGS( wxSpinButtonStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxSpinButton, wxControl, "wx/spinbut.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxSpinButton)
+ wxEVENT_RANGE_PROPERTY( Spin, wxEVT_SCROLL_TOP, wxEVT_SCROLL_CHANGED, wxSpinEvent )
+
+ wxPROPERTY( Value, int, SetValue, GetValue, 0, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Min, int, SetMin, GetMin, 0, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY( Max, int, SetMax, GetMax, 0, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+
+ wxPROPERTY_FLAGS( WindowStyle, wxSpinButtonStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxSpinButton)
+
+wxCONSTRUCTOR_5( wxSpinButton, wxWindow*, Parent, wxWindowID, Id, \
+ wxPoint, Position, wxSize, Size, long, WindowStyle )
+
+IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent)
+
+
+#endif // wxUSE_SPINBTN
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/statbmpcmn.cpp\r
-// Purpose: wxStaticBitmap common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: statbmp.cpp 42816 2006-10-31 08:50:17Z RD $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ===========================================================================\r
-// declarations\r
-// ===========================================================================\r
-\r
-// ---------------------------------------------------------------------------\r
-// headers\r
-// ---------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_STATBMP\r
-\r
-#include "wx/statbmp.h"\r
-\r
-// ---------------------------------------------------------------------------\r
-// XTI\r
-// ---------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxStaticBitmapStyle )\r
-wxBEGIN_FLAGS( wxStaticBitmapStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
-wxEND_FLAGS( wxStaticBitmapStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticBitmap, wxControl, "wx/statbmp.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxStaticBitmap)\r
- wxPROPERTY_FLAGS( WindowStyle, wxStaticBitmapStyle, long, \\r
- SetWindowStyleFlag, GetWindowStyleFlag, \\r
- wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), \\r
- wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxStaticBitmap)\r
-\r
-wxCONSTRUCTOR_5( wxStaticBitmap, wxWindow*, Parent, wxWindowID, Id, \\r
- wxBitmap, Bitmap, wxPoint, Position, wxSize, Size )\r
-\r
-/*\r
- TODO PROPERTIES :\r
- bitmap\r
-*/\r
-\r
-#endif // wxUSE_STATBMP\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/statbmpcmn.cpp
+// Purpose: wxStaticBitmap common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ===========================================================================
+// declarations
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// headers
+// ---------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_STATBMP
+
+#include "wx/statbmp.h"
+
+// ---------------------------------------------------------------------------
+// XTI
+// ---------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxStaticBitmapStyle )
+wxBEGIN_FLAGS( wxStaticBitmapStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+wxEND_FLAGS( wxStaticBitmapStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticBitmap, wxControl, "wx/statbmp.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxStaticBitmap)
+ wxPROPERTY_FLAGS( WindowStyle, wxStaticBitmapStyle, long, \
+ SetWindowStyleFlag, GetWindowStyleFlag, \
+ wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), \
+ wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxStaticBitmap)
+
+wxCONSTRUCTOR_5( wxStaticBitmap, wxWindow*, Parent, wxWindowID, Id, \
+ wxBitmap, Bitmap, wxPoint, Position, wxSize, Size )
+
+/*
+ TODO PROPERTIES :
+ bitmap
+*/
+
+#endif // wxUSE_STATBMP
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/statboxcmn.cpp\r
-// Purpose: wxStaticBox common code\r
-// Author: Julian Smart\r
-// Modified by:\r
-// Created: 04/01/98\r
-// RCS-ID: $Id: statbox.cpp 45008 2007-03-22 02:28:06Z VZ $\r
-// Copyright: (c) Julian Smart\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#if wxUSE_STATBOX\r
-\r
-#include "wx/statbox.h"\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxStaticBoxStyle )\r
-wxBEGIN_FLAGS( wxStaticBoxStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-wxEND_FLAGS( wxStaticBoxStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticBox, wxControl, "wx/statbox.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxStaticBox)\r
- wxPROPERTY( Label, wxString, SetLabel, GetLabel, wxString(), 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group"))\r
- wxPROPERTY_FLAGS( WindowStyle, wxStaticBoxStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxStaticBox)\r
-\r
-wxCONSTRUCTOR_6( wxStaticBox, wxWindow*, Parent, wxWindowID, Id, \\r
- wxString, Label, wxPoint, Position, wxSize, Size, \\r
- long, WindowStyle )\r
-\r
-#endif // wxUSE_STATBOX\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/statboxcmn.cpp
+// Purpose: wxStaticBox common code
+// Author: Julian Smart
+// Modified by:
+// Created: 04/01/98
+// RCS-ID: $Id$
+// Copyright: (c) Julian Smart
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#if wxUSE_STATBOX
+
+#include "wx/statbox.h"
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxStaticBoxStyle )
+wxBEGIN_FLAGS( wxStaticBoxStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+wxEND_FLAGS( wxStaticBoxStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticBox, wxControl, "wx/statbox.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxStaticBox)
+ wxPROPERTY( Label, wxString, SetLabel, GetLabel, wxString(), 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group"))
+ wxPROPERTY_FLAGS( WindowStyle, wxStaticBoxStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxStaticBox)
+
+wxCONSTRUCTOR_6( wxStaticBox, wxWindow*, Parent, wxWindowID, Id, \
+ wxString, Label, wxPoint, Position, wxSize, Size, \
+ long, WindowStyle )
+
+#endif // wxUSE_STATBOX
-/////////////////////////////////////////////////////////////////////////////\r
-// Name: src/common/statlinecmn.cpp\r
-// Purpose: wxStaticLine common code\r
-// Author: Vadim Zeitlin\r
-// Created: 28.06.99\r
-// Version: $Id: statline.cpp 41054 2006-09-07 19:01:45Z ABX $\r
-// Copyright: (c) 1998 Vadim Zeitlin\r
-// Licence: wxWindows licence\r
-/////////////////////////////////////////////////////////////////////////////\r
-\r
-// ============================================================================\r
-// declarations\r
-// ============================================================================\r
-\r
-// ----------------------------------------------------------------------------\r
-// headers\r
-// ----------------------------------------------------------------------------\r
-\r
-// For compilers that support precompilation, includes "wx.h".\r
-#include "wx/wxprec.h"\r
-\r
-#ifdef __BORLANDC__\r
- #pragma hdrstop\r
-#endif\r
-\r
-#include "wx/statline.h"\r
-\r
-#if wxUSE_STATLINE\r
-\r
-// ----------------------------------------------------------------------------\r
-// XTI\r
-// ----------------------------------------------------------------------------\r
-\r
-wxDEFINE_FLAGS( wxStaticLineStyle )\r
-wxBEGIN_FLAGS( wxStaticLineStyle )\r
- // new style border flags, we put them first to\r
- // use them for streaming out\r
- wxFLAGS_MEMBER(wxBORDER_SIMPLE)\r
- wxFLAGS_MEMBER(wxBORDER_SUNKEN)\r
- wxFLAGS_MEMBER(wxBORDER_DOUBLE)\r
- wxFLAGS_MEMBER(wxBORDER_RAISED)\r
- wxFLAGS_MEMBER(wxBORDER_STATIC)\r
- wxFLAGS_MEMBER(wxBORDER_NONE)\r
-\r
- // old style border flags\r
- wxFLAGS_MEMBER(wxSIMPLE_BORDER)\r
- wxFLAGS_MEMBER(wxSUNKEN_BORDER)\r
- wxFLAGS_MEMBER(wxDOUBLE_BORDER)\r
- wxFLAGS_MEMBER(wxRAISED_BORDER)\r
- wxFLAGS_MEMBER(wxSTATIC_BORDER)\r
- wxFLAGS_MEMBER(wxBORDER)\r
-\r
- // standard window styles\r
- wxFLAGS_MEMBER(wxTAB_TRAVERSAL)\r
- wxFLAGS_MEMBER(wxCLIP_CHILDREN)\r
- wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)\r
- wxFLAGS_MEMBER(wxWANTS_CHARS)\r
- wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)\r
- wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )\r
- wxFLAGS_MEMBER(wxVSCROLL)\r
- wxFLAGS_MEMBER(wxHSCROLL)\r
-\r
- wxFLAGS_MEMBER(wxLI_HORIZONTAL)\r
- wxFLAGS_MEMBER(wxLI_VERTICAL)\r
-wxEND_FLAGS( wxStaticLineStyle )\r
-\r
-wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticLine, wxControl, "wx/statline.h")\r
-\r
-wxBEGIN_PROPERTIES_TABLE(wxStaticLine)\r
- wxPROPERTY_FLAGS( WindowStyle, wxStaticLineStyle, long, SetWindowStyleFlag, \\r
- GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \\r
- wxT("Helpstring"), wxT("group")) // style\r
-wxEND_PROPERTIES_TABLE()\r
-\r
-wxEMPTY_HANDLERS_TABLE(wxStaticLine)\r
-\r
-wxCONSTRUCTOR_5( wxStaticLine, wxWindow*, Parent, wxWindowID, Id, \\r
- wxPoint, Position, wxSize, Size, long, WindowStyle)\r
-\r
-#endif // wxUSE_STATLINE\r
+/////////////////////////////////////////////////////////////////////////////
+// Name: src/common/statlinecmn.cpp
+// Purpose: wxStaticLine common code
+// Author: Vadim Zeitlin
+// Created: 28.06.99
+// Version: $Id$
+// Copyright: (c) 1998 Vadim Zeitlin
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+ #pragma hdrstop
+#endif
+
+#include "wx/statline.h"
+
+#if wxUSE_STATLINE
+
+// ----------------------------------------------------------------------------
+// XTI
+// ----------------------------------------------------------------------------
+
+wxDEFINE_FLAGS( wxStaticLineStyle )
+wxBEGIN_FLAGS( wxStaticLineStyle )
+ // new style border flags, we put them first to
+ // use them for streaming out
+ wxFLAGS_MEMBER(wxBORDER_SIMPLE)
+ wxFLAGS_MEMBER(wxBORDER_SUNKEN)
+ wxFLAGS_MEMBER(wxBORDER_DOUBLE)
+ wxFLAGS_MEMBER(wxBORDER_RAISED)
+ wxFLAGS_MEMBER(wxBORDER_STATIC)
+ wxFLAGS_MEMBER(wxBORDER_NONE)
+
+ // old style border flags
+ wxFLAGS_MEMBER(wxSIMPLE_BORDER)
+ wxFLAGS_MEMBER(wxSUNKEN_BORDER)
+ wxFLAGS_MEMBER(wxDOUBLE_BORDER)
+ wxFLAGS_MEMBER(wxRAISED_BORDER)
+ wxFLAGS_MEMBER(wxSTATIC_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
+
+ // standard window styles
+ wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
+ wxFLAGS_MEMBER(wxCLIP_CHILDREN)
+ wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
+ wxFLAGS_MEMBER(wxWANTS_CHARS)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
+ wxFLAGS_MEMBER(wxVSCROLL)
+ wxFLAGS_MEMBER(wxHSCROLL)
+
+ wxFLAGS_MEMBER(wxLI_HORIZONTAL)
+ wxFLAGS_MEMBER(wxLI_VERTICAL)
+wxEND_FLAGS( wxStaticLineStyle )
+
+wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticLine, wxControl, "wx/statline.h")
+
+wxBEGIN_PROPERTIES_TABLE(wxStaticLine)
+ wxPROPERTY_FLAGS( WindowStyle, wxStaticLineStyle, long, SetWindowStyleFlag, \
+ GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \
+ wxT("Helpstring"), wxT("group")) // style
+wxEND_PROPERTIES_TABLE()
+
+wxEMPTY_HANDLERS_TABLE(wxStaticLine)
+
+wxCONSTRUCTOR_5( wxStaticLine, wxWindow*, Parent, wxWindowID, Id, \
+ wxPoint, Position, wxSize, Size, long, WindowStyle)
+
+#endif // wxUSE_STATLINE