]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/xti.h
don't do anything non trivial (like creating wxFontMapper) in ctors of global objects
[wxWidgets.git] / include / wx / xti.h
index 35ea60033dd48120a84c792c603ed2b25d389263..50ec2f14cbe509a9d81c9861684f8459aba2554c 100644 (file)
@@ -42,6 +42,8 @@
 #include "wx/string.h"
 #include "wx/arrstr.h"
 #include "wx/hashmap.h"
+#include "wx/log.h"
+#include  "wx/intl.h"
 
 #include <typeinfo>
 
 #endif
 
 #if wxUSE_MEMBER_TEMPLATES
-#define WX_TEMPLATED_MEMBER_CALL( method , type ) method<type>()
-#define WX_TEMPLATED_MEMBER_FIX( type )
+#define wxTEMPLATED_MEMBER_CALL( method , type ) method<type>()
+#define wxTEMPLATED_MEMBER_FIX( type )
 #else
-#define WX_TEMPLATED_MEMBER_CALL( method , type ) method((type*)NULL)
-#define WX_TEMPLATED_MEMBER_FIX( type ) type* =NULL
+#define wxTEMPLATED_MEMBER_CALL( method , type ) method((type*)NULL)
+#define wxTEMPLATED_MEMBER_FIX( type ) type* =NULL
 #endif
 
 class WXDLLIMPEXP_BASE wxObject;
@@ -85,11 +87,11 @@ typedef void (wxObject::*wxObjectEventFunction)(wxEvent&);
 // implementation, an enum would have
 // to be enumerated eg :
 //
-// WX_BEGIN_ENUM( wxFlavor )
-//   WX_ENUM_MEMBER( Vanilla )
-//   WX_ENUM_MEMBER( Chocolate )
-//   WX_ENUM_MEMBER( Strawberry )
-// WX_END_ENUM( wxFlavor )
+// wxBEGIN_ENUM( wxFlavor )
+//   wxENUM_MEMBER( Vanilla )
+//   wxENUM_MEMBER( Chocolate )
+//   wxENUM_MEMBER( Strawberry )
+// wxEND_ENUM( wxFlavor )
 // ----------------------------------------------------------------------------
 
 struct WXDLLIMPEXP_BASE wxEnumMemberData
@@ -129,12 +131,12 @@ private :
     int m_count ;
 };
 
-#define WX_BEGIN_ENUM( e ) \
+#define wxBEGIN_ENUM( e ) \
     wxEnumMemberData s_enumDataMembers##e[] = {
 
-#define WX_ENUM_MEMBER( v ) { wxT(#v), v } ,
+#define wxENUM_MEMBER( v ) { wxT(#v), v } ,
 
-#define WX_END_ENUM( e ) { NULL , 0 } } ; \
+#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 ) \
@@ -165,13 +167,13 @@ private :
 //
 // in the implementation file :
 //
-// WX_BEGIN_ENUM( wxFlavor )
-//  WX_ENUM_MEMBER( Vanilla )
-//  WX_ENUM_MEMBER( Chocolate )
-//  WX_ENUM_MEMBER( Strawberry )
-// WX_END_ENUM( wxFlavor )
+// wxBEGIN_ENUM( wxFlavor )
+//  wxENUM_MEMBER( Vanilla )
+//  wxENUM_MEMBER( Chocolate )
+//  wxENUM_MEMBER( Strawberry )
+// wxEND_ENUM( wxFlavor )
 //
-// WX_IMPLEMENT_SET_STREAMING( wxCoupe , wxFlavor )
+// wxIMPLEMENT_SET_STREAMING( wxCoupe , wxFlavor )
 //
 // implementation note : no partial specialization for streaming, but a delegation to a
 // different class
@@ -221,7 +223,7 @@ void wxSetToString( wxString &s , const wxBitset<e> &data )
     }
 }
 
-#define WX_IMPLEMENT_SET_STREAMING(SetName,e) \
+#define wxIMPLEMENT_SET_STREAMING(SetName,e) \
     template<>  void wxStringReadValue(const wxString &s , wxBitset<e> &data ) \
 { \
     wxSetFromString( s , data ) ; \
@@ -279,12 +281,12 @@ void wxFlagsToString( wxString &s , const e& data )
     }
 }
 
-#define WX_BEGIN_FLAGS( e ) \
+#define wxBEGIN_FLAGS( e ) \
     wxEnumMemberData s_enumDataMembers##e[] = {
 
-#define WX_FLAGS_MEMBER( v ) { wxT(#v), v } ,
+#define wxFLAGS_MEMBER( v ) { wxT(#v), v } ,
 
-#define WX_END_FLAGS( e ) { NULL , 0 } } ; \
+#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 ) \
@@ -391,11 +393,11 @@ public :
     // convert a wxxVariant holding data of this type into a string
     void ConvertToString( const wxxVariant& data , wxString &result ) const
 
-    { wxASSERT_MSG( m_toString , wxT("String conversions not supported") ) ; (*m_toString)( data , result ) ; }
+    { if ( m_toString ) (*m_toString)( data , result ) ; else wxLogError( _("String conversions not supported") ) ; }
 
     // convert a string into a wxxVariant holding the corresponding data in this type
     void ConvertFromString( const wxString& data , wxxVariant &result ) const
-    { wxASSERT_MSG( m_fromString , wxT("String conversions not supported") ) ; (*m_fromString)( data , result ) ; }
+    { if( m_fromString ) (*m_fromString)( data , result ) ; else wxLogError( _("String conversions not supported") ) ; }
 
 #if wxUSE_UNICODE
     static wxTypeInfo        *FindType(const char *typeName) { return FindType( wxString::FromAscii(typeName) ) ; }
@@ -464,11 +466,11 @@ public :
     // convert a wxxVariant holding data of this type into a long
     void ConvertToLong( const wxxVariant& data , long &result ) const
 
-    { wxASSERT_MSG( m_toLong , wxT("Long conversions not supported") ) ; (*m_toLong)( data , result ) ; }
+    { if( m_toLong ) (*m_toLong)( data , result ) ; else wxLogError( _("Long Conversions not supported") ) ; }
 
     // convert a long into a wxxVariant holding the corresponding data in this type
     void ConvertFromLong( long data , wxxVariant &result ) const
-    { wxASSERT_MSG( m_fromLong , wxT("Long conversions not supported") ) ; (*m_fromLong)( data , result ) ; }
+    { if( m_fromLong ) (*m_fromLong)( data , result ) ; else wxLogError( _("Long Conversions not supported") ) ;}
 
 private :
     converterToLong_t m_toLong ;
@@ -530,21 +532,16 @@ template<typename T> const wxTypeInfo* wxGetTypeInfo( T * ) { return wxTypeInfo:
 
 // this macro is for usage with custom, non-object derived classes and structs, wxPoint is such a custom type
 
-#define WX_CUSTOM_TYPE_INFO( e , toString , fromString ) \
+#define wxCUSTOM_TYPE_INFO( e , toString , fromString ) \
     wxCustomTypeInfo s_typeInfo##e(typeid(e).name() , &toString , &fromString) ;
 
-#define WX_COLLECTION_TYPE_INFO( element , collection ) \
+#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
+// 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 WX_ILLEGAL_TYPE_SPECIALIZATION( a )
-/*
-    template<>  const wxTypeInfo* wxGetTypeInfo( a * ) { assert(0) ; \
-    static wxBuiltInTypeInfo s_typeInfo( wxT_VOID ) ; return &s_typeInfo ; } \
-    template<>  void wxStringReadValue(const wxString & , a & ) { assert(0) ; }\
-    template<>  void wxStringWriteValue(wxString & , a const & ) { assert(0) ; }
-*/
+#define wxILLEGAL_TYPE_SPECIALIZATION( a )
 
 // ----------------------------------------------------------------------------
 // wxxVariant as typesafe data holder
@@ -600,7 +597,7 @@ public :
     ~wxxVariant() { delete m_data ; }
 
     // get a ref to the stored data
-    template<typename T> T& Get(WX_TEMPLATED_MEMBER_FIX(T))
+    template<typename T> T& Get(wxTEMPLATED_MEMBER_FIX(T))
     {
         wxxVariantDataT<T> *dataptr = dynamic_cast<wxxVariantDataT<T>*> (m_data) ;
         wxASSERT_MSG( dataptr , wxT("Cast not possible") ) ;
@@ -608,7 +605,7 @@ public :
     }
 
     // get a ref to the stored data
-    template<typename T> const T& Get(WX_TEMPLATED_MEMBER_FIX(T)) const
+    template<typename T> const T& Get(wxTEMPLATED_MEMBER_FIX(T)) const
     {
         const wxxVariantDataT<T> *dataptr = dynamic_cast<const wxxVariantDataT<T>*> (m_data) ;
         wxASSERT_MSG( dataptr , wxT("Cast not possible") ) ;
@@ -669,7 +666,7 @@ template<typename T>
 void wxStringWriteValue( wxString &s , const T &data);
 
 template<typename T>
-void wxToStringConverter( const wxxVariant &v, wxString &s) { wxStringWriteValue( s , v.WX_TEMPLATED_MEMBER_CALL(Get , T) ) ; }
+void wxToStringConverter( const wxxVariant &v, wxString &s) { wxStringWriteValue( s , v.wxTEMPLATED_MEMBER_CALL(Get , T) ) ; }
 
 template<typename T>
 void wxFromStringConverter( const wxString &s, wxxVariant &v) { T d ; wxStringReadValue( s , d ) ; v = wxxVariant(d) ; } \
@@ -730,7 +727,7 @@ private :
 
 
 
-#define WX_SETTER( property, Klass, valueType, setterMethod ) \
+#define wxSETTER( property, Klass, valueType, setterMethod ) \
 class wxSetter##property : public wxSetter \
 { \
 public: \
@@ -746,7 +743,7 @@ public: \
 } \
 } ;
 
-#define WX_GETTER( property, Klass, valueType , gettermethod ) \
+#define wxGETTER( property, Klass, valueType , gettermethod ) \
 class wxGetter##property : public wxGetter \
 { \
 public : \
@@ -759,7 +756,7 @@ public : \
 } \
 } ;
 
-#define WX_ADDER( property, Klass, valueType , addermethod ) \
+#define wxADDER( property, Klass, valueType , addermethod ) \
 class wxAdder##property : public wxAdder \
 { \
 public: \
@@ -775,7 +772,7 @@ public: \
 } \
 } ;
 
-#define WX_COLLECTION_GETTER( property, Klass, valueType , gettermethod ) \
+#define wxCOLLECTION_GETTER( property, Klass, valueType , gettermethod ) \
 class wxCollectionGetter##property : public wxCollectionGetter \
 { \
 public : \
@@ -798,19 +795,19 @@ public :
 
     // Setting a simple property (non-collection)
     virtual void SetProperty(wxObject *object, const wxxVariant &value) const
-    { wxASSERT_MSG(m_setter,wxT("SetProperty called w/o valid setter") ) ; m_setter->Set( object , value ) ;}
+    { 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, wxxVariant &result) const
-    { wxASSERT_MSG(m_getter,wxT("GetProperty called w/o valid getter") ) ; m_getter->Get( object , result ) ;}
+    { 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 wxxVariant &value) const
-    { wxASSERT_MSG(m_adder,wxT("AddToPropertyCollection called w/o valid adder") ) ; m_adder->Add( object , value ) ;}
+    { 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, wxxVariantArray &result) const
-    { wxASSERT_MSG(m_collectionGetter,wxT("GetPropertyCollection called w/o valid collection getter") ) ; m_collectionGetter->Get( obj , result) ;}
+    { 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 ; }
@@ -858,11 +855,11 @@ public :
 
     // Adding an element to a collection property
     virtual void AddToPropertyCollection(wxObject *WXUNUSED(object), const wxxVariant &WXUNUSED(value)) const
-    { wxASSERT_MSG(0,wxT("AddToPropertyCollection called on a generic accessor") ) ;}
+    { wxLogError( _("AddToPropertyCollection called on a generic accessor") ) ;}
 
     // Getting a collection property
     virtual void GetPropertyCollection( const wxObject *WXUNUSED(obj), wxxVariantArray &WXUNUSED(result)) const
-    { wxASSERT_MSG(0,wxT("GetPropertyCollection called on a generic accessor") ) ;}
+    { wxLogError ( _("GetPropertyCollection called on a generic accessor") ) ;}
 private :
     struct wxGenericPropertyAccessorInternal ;
     wxGenericPropertyAccessorInternal* m_data ;
@@ -1077,69 +1074,80 @@ private :
 
 WX_DECLARE_STRING_HASH_MAP_WITH_DECL( wxPropertyInfo* , wxPropertyInfoMap , class WXDLLIMPEXP_BASE ) ;
 
-#define WX_BEGIN_PROPERTIES_TABLE(theClass) \
+#define wxBEGIN_PROPERTIES_TABLE(theClass) \
     wxPropertyInfo *theClass::GetPropertiesStatic()  \
 {  \
     typedef theClass class_t; \
     static wxPropertyInfo* first = NULL ;
 
-#define WX_END_PROPERTIES_TABLE() \
+#define wxEND_PROPERTIES_TABLE() \
     return first ; }
 
-#define WX_HIDE_PROPERTY( pname ) \
+#define wxHIDE_PROPERTY( pname ) \
     static wxPropertyInfo _propertyInfo##pname( first , class_t::GetClassInfoStatic() , wxT(#pname) , typeid(void).name() ,NULL , wxxVariant() , wxPROP_DONT_STREAM , wxEmptyString , wxEmptyString ) ;
 
-#define WX_PROPERTY( pname , type , setter , getter ,defaultValue , flags , help , group) \
-    WX_SETTER( pname , class_t , type , setter ) \
+#define wxPROPERTY( pname , type , setter , getter ,defaultValue , flags , help , group) \
+    wxSETTER( pname , class_t , type , setter ) \
     static wxSetter##pname _setter##pname ; \
-    WX_GETTER( pname , class_t , type , getter ) \
+    wxGETTER( pname , class_t , type , getter ) \
     static wxGetter##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 , wxxVariant(defaultValue) , flags , group , help ) ;
 
-#define WX_PROPERTY_FLAGS( pname , flags , type , setter , getter ,defaultValue , pflags , help , group) \
-    WX_SETTER( pname , class_t , type , setter ) \
+#define wxPROPERTY_FLAGS( pname , flags , type , setter , getter ,defaultValue , pflags , help , group) \
+    wxSETTER( pname , class_t , type , setter ) \
     static wxSetter##pname _setter##pname ; \
-    WX_GETTER( pname , class_t , type , getter ) \
+    wxGETTER( pname , class_t , type , getter ) \
     static wxGetter##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 , wxxVariant(defaultValue), wxPROP_ENUM_STORE_LONG | pflags , help , group ) ;
 
-#define WX_READONLY_PROPERTY( pname , type , getter ,defaultValue , flags , help , group) \
-    WX_GETTER( pname , class_t , type , getter ) \
+#define wxREADONLY_PROPERTY( pname , type , getter ,defaultValue , flags , help , group) \
+    wxGETTER( pname , class_t , type , getter ) \
     static wxGetter##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 , wxxVariant(defaultValue), flags , help , group ) ;
 
-#define WX_READONLY_PROPERTY_FLAGS( pname , flags , type , getter ,defaultValue , pflags , help , group) \
-    WX_GETTER( pname , class_t , type , getter ) \
+#define wxREADONLY_PROPERTY_FLAGS( pname , flags , type , getter ,defaultValue , pflags , help , group) \
+    wxGETTER( pname , class_t , type , getter ) \
     static wxGetter##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 , wxxVariant(defaultValue), wxPROP_ENUM_STORE_LONG | pflags , help , group ) ;
 
-#define WX_PROPERTY_COLLECTION( pname , colltype , addelemtype , adder , getter , flags , help , group ) \
-    WX_ADDER( pname , class_t , addelemtype , adder ) \
+#define wxPROPERTY_COLLECTION( pname , colltype , addelemtype , adder , getter , flags , help , group ) \
+    wxADDER( pname , class_t , addelemtype , adder ) \
     static wxAdder##pname _adder##pname ; \
-    WX_COLLECTION_GETTER( pname , class_t , colltype , getter ) \
+    wxCOLLECTION_GETTER( pname , class_t , colltype , getter ) \
     static wxCollectionGetter##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 WX_READONLY_PROPERTY_COLLECTION( pname , colltype , addelemtype , getter , flags , help , group) \
-    WX_COLLECTION_GETTER( pname , class_t , colltype , getter ) \
+#define wxREADONLY_PROPERTY_COLLECTION( pname , colltype , addelemtype , getter , flags , help , group) \
+    wxCOLLECTION_GETTER( pname , class_t , colltype , getter ) \
     static wxCollectionGetter##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 WX_DELEGATE( name , eventType , eventClass ) \
+#define wxEVENT_PROPERTY( name , eventType , eventClass ) \
     static wxDelegateTypeInfo _typeInfo##name( eventType , CLASSINFO( eventClass ) ) ; \
     static wxPropertyInfo _propertyInfo##name( first ,class_t::GetClassInfoStatic() , wxT(#name) , &_typeInfo##name , NULL , wxxVariant() ) ; \
 
-#define WX_DELEGATE_RANGE( name , eventType , lastEventType , eventClass ) \
+#define wxEVENT_RANGE_PROPERTY( name , eventType , lastEventType , eventClass ) \
     static wxDelegateTypeInfo _typeInfo##name( eventType , lastEventType , CLASSINFO( eventClass ) ) ; \
     static wxPropertyInfo _propertyInfo##name( first , class_t::GetClassInfoStatic() , wxT(#name) , &_typeInfo##name , NULL , wxxVariant() ) ; \
 
+// ----------------------------------------------------------------------------
+// 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; }
+
 // ----------------------------------------------------------------------------
 // Handler Info
 //
@@ -1198,16 +1206,16 @@ private :
     wxClassInfo*        m_itsClass ;
 };
 
-#define WX_HANDLER(name,eventClassType) \
-    static wxHandlerInfo _handlerInfo##name( first , class_t::GetClassInfoStatic() , #name , (wxObjectEventFunction) (wxEventFunction) &name , CLASSINFO( eventClassType ) ) ;
+#define wxHANDLER(name,eventClassType) \
+    static wxHandlerInfo _handlerInfo##name( first , class_t::GetClassInfoStatic() , wxT(#name) , (wxObjectEventFunction) (wxEventFunction) &name , CLASSINFO( eventClassType ) ) ;
 
-#define WX_BEGIN_HANDLERS_TABLE(theClass) \
+#define wxBEGIN_HANDLERS_TABLE(theClass) \
     wxHandlerInfo *theClass::GetHandlersStatic()  \
 {  \
     typedef theClass class_t; \
     static wxHandlerInfo* first = NULL ;
 
-#define WX_END_HANDLERS_TABLE() \
+#define wxEND_HANDLERS_TABLE() \
     return first ; }
 
 // ----------------------------------------------------------------------------
@@ -1252,13 +1260,13 @@ struct wxConstructorBridge_Dummy : public wxConstructorBridge
     }
 } ;
 
-#define WX_CONSTRUCTOR_0(klass) \
+#define wxCONSTRUCTOR_0(klass) \
     wxConstructorBridge_0<klass> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { NULL } ; \
     const int klass::sm_constructorPropertiesCount##klass = 0 ;
 
-#define WX_CONSTRUCTOR_DUMMY(klass) \
+#define wxCONSTRUCTOR_DUMMY(klass) \
     wxConstructorBridge_Dummy constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { NULL } ; \
@@ -1273,12 +1281,12 @@ struct wxConstructorBridge_1 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0)
+            args[0].wxTEMPLATED_MEMBER_CALL(Get , T0)
             );
     }
 };
 
-#define WX_CONSTRUCTOR_1(klass,t0,v0) \
+#define wxCONSTRUCTOR_1(klass,t0,v0) \
     wxConstructorBridge_1<klass,t0> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0) } ; \
@@ -1294,13 +1302,13 @@ struct wxConstructorBridge_2 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1)
+            args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
+            args[1].wxTEMPLATED_MEMBER_CALL(Get , T1)
             );
     }
 };
 
-#define WX_CONSTRUCTOR_2(klass,t0,v0,t1,v1) \
+#define wxCONSTRUCTOR_2(klass,t0,v0,t1,v1) \
     wxConstructorBridge_2<klass,t0,t1> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  } ; \
@@ -1315,13 +1323,13 @@ struct wxDirectConstructorBridge_2 : public wxDirectConstructorBrigde
     void Create(wxObject * &o, wxxVariant *args)
     {
         o = new Class(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1)
+            args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
+            args[1].wxTEMPLATED_MEMBER_CALL(Get , T1)
             );
     }
 };
 
-#define WX_DIRECT_CONSTRUCTOR_2(klass,t0,v0,t1,v1) \
+#define wxDIRECT_CONSTRUCTOR_2(klass,t0,v0,t1,v1) \
     wxDirectConstructorBridge_2<klass,t0,t1> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  } ; \
@@ -1338,14 +1346,14 @@ struct wxConstructorBridge_3 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1) ,
-            args[2].WX_TEMPLATED_MEMBER_CALL(Get , T2)
+            args[0].wxTEMPLATED_MEMBER_CALL(Get , T0) ,
+            args[1].wxTEMPLATED_MEMBER_CALL(Get , T1) ,
+            args[2].wxTEMPLATED_MEMBER_CALL(Get , T2)
             );
     }
 };
 
-#define WX_CONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \
+#define wxCONSTRUCTOR_3(klass,t0,v0,t1,v1,t2,v2) \
     wxConstructorBridge_3<klass,t0,t1,t2> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  } ; \
@@ -1361,15 +1369,15 @@ struct wxConstructorBridge_4 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1) ,
-            args[2].WX_TEMPLATED_MEMBER_CALL(Get , T2) ,
-            args[3].WX_TEMPLATED_MEMBER_CALL(Get , T3)
+            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 WX_CONSTRUCTOR_4(klass,t0,v0,t1,v1,t2,v2,t3,v3) \
+#define wxCONSTRUCTOR_4(klass,t0,v0,t1,v1,t2,v2,t3,v3) \
     wxConstructorBridge_4<klass,t0,t1,t2,t3> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  , wxT(#v3)  } ; \
@@ -1385,16 +1393,16 @@ struct wxConstructorBridge_5 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1) ,
-            args[2].WX_TEMPLATED_MEMBER_CALL(Get , T2) ,
-            args[3].WX_TEMPLATED_MEMBER_CALL(Get , T3) ,
-            args[4].WX_TEMPLATED_MEMBER_CALL(Get , T4)
+            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 WX_CONSTRUCTOR_5(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4) \
+#define wxCONSTRUCTOR_5(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4) \
     wxConstructorBridge_5<klass,t0,t1,t2,t3,t4> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  , wxT(#v3)  , wxT(#v4)  } ; \
@@ -1410,17 +1418,17 @@ struct wxConstructorBridge_6 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1) ,
-            args[2].WX_TEMPLATED_MEMBER_CALL(Get , T2) ,
-            args[3].WX_TEMPLATED_MEMBER_CALL(Get , T3) ,
-            args[4].WX_TEMPLATED_MEMBER_CALL(Get , T4) ,
-            args[5].WX_TEMPLATED_MEMBER_CALL(Get , T5)
+            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 WX_CONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \
+#define wxCONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \
     wxConstructorBridge_6<klass,t0,t1,t2,t3,t4,t5> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  , wxT(#v3)  , wxT(#v4)  , wxT(#v5)  } ; \
@@ -1435,17 +1443,17 @@ struct wxDirectConstructorBridge_6 : public wxDirectConstructorBrigde
     void Create(wxObject * &o, wxxVariant *args)
     {
         o = new Class(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1) ,
-            args[2].WX_TEMPLATED_MEMBER_CALL(Get , T2) ,
-            args[3].WX_TEMPLATED_MEMBER_CALL(Get , T3) ,
-            args[4].WX_TEMPLATED_MEMBER_CALL(Get , T4) ,
-            args[5].WX_TEMPLATED_MEMBER_CALL(Get , T5)
+            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 WX_DIRECT_CONSTRUCTOR_6(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5) \
+#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 ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  , wxT(#v3)  , wxT(#v4)  , wxT(#v5)  } ; \
@@ -1461,18 +1469,18 @@ struct wxConstructorBridge_7 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1) ,
-            args[2].WX_TEMPLATED_MEMBER_CALL(Get , T2) ,
-            args[3].WX_TEMPLATED_MEMBER_CALL(Get , T3) ,
-            args[4].WX_TEMPLATED_MEMBER_CALL(Get , T4) ,
-            args[5].WX_TEMPLATED_MEMBER_CALL(Get , T5) ,
-            args[6].WX_TEMPLATED_MEMBER_CALL(Get , T6)
+            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 WX_CONSTRUCTOR_7(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6) \
+#define wxCONSTRUCTOR_7(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6) \
     wxConstructorBridge_7<klass,t0,t1,t2,t3,t4,t5,t6> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  , wxT(#v3)  , wxT(#v4)  , wxT(#v5)  , wxT(#v6) } ; \
@@ -1488,19 +1496,19 @@ struct wxConstructorBridge_8 : public wxConstructorBridge
     {
         Class *obj = dynamic_cast<Class*>(o);
         obj->Create(
-            args[0].WX_TEMPLATED_MEMBER_CALL(Get , T0) ,
-            args[1].WX_TEMPLATED_MEMBER_CALL(Get , T1) ,
-            args[2].WX_TEMPLATED_MEMBER_CALL(Get , T2) ,
-            args[3].WX_TEMPLATED_MEMBER_CALL(Get , T3) ,
-            args[4].WX_TEMPLATED_MEMBER_CALL(Get , T4) ,
-            args[5].WX_TEMPLATED_MEMBER_CALL(Get , T5) ,
-            args[6].WX_TEMPLATED_MEMBER_CALL(Get , T6) ,
-            args[7].WX_TEMPLATED_MEMBER_CALL(Get , T7)
+            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 WX_CONSTRUCTOR_8(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6,t7,v7) \
+#define wxCONSTRUCTOR_8(klass,t0,v0,t1,v1,t2,v2,t3,v3,t4,v4,t5,v5,t6,v6,t7,v7) \
     wxConstructorBridge_8<klass,t0,t1,t2,t3,t4,t5,t6,t7> constructor##klass ; \
     wxConstructorBridge* klass::sm_constructor##klass = &constructor##klass ; \
     const wxChar *klass::sm_constructorProperties##klass[] = { wxT(#v0)  , wxT(#v1)  , wxT(#v2)  , wxT(#v3)  , wxT(#v4)  , wxT(#v5)  , wxT(#v6) , wxT(#v7) } ; \
@@ -1593,7 +1601,11 @@ public:
     // direct construction call for classes that cannot construct instances via alloc/create
     wxObject *ConstructObject(int ParamCount, wxxVariant *Params) const
     {
-        wxASSERT_MSG( ParamCount == m_constructorPropertiesCount , wxT("Illegal Parameter Count for ConstructObject Method")) ;
+        if ( ParamCount != m_constructorPropertiesCount )
+        {
+            wxLogError( _("Illegal Parameter Count for ConstructObject Method") ) ;
+            return NULL ;
+        }
         wxObject *object = NULL ;
         m_constructor->Create( object , Params ) ;
         return object ;
@@ -1602,6 +1614,10 @@ public:
     bool NeedsDirectConstruction() const { return dynamic_cast<wxDirectConstructorBrigde*>( m_constructor) != NULL ; }
 
     const wxChar       *GetClassName() const { return m_className; }
+    const wxChar       *GetBaseClassName1() const
+        { return m_parents[0] ? m_parents[0]->GetClassName() : NULL; }
+    const wxChar       *GetBaseClassName2() const
+        { return (m_parents[0] && m_parents[1]) ? m_parents[1]->GetClassName() : NULL; }
     const wxChar       *GetIncludeName() const { return m_unitName ; }
     const wxClassInfo **GetParents() const { return m_parents; }
     int                 GetSize() const { return m_objectSize; }
@@ -1658,7 +1674,11 @@ public:
     // initialized
     virtual void Create (wxObject *object, int ParamCount, wxxVariant *Params) const
     {
-        wxASSERT_MSG( ParamCount == m_constructorPropertiesCount , wxT("Illegal Parameter Count for Create Method")) ;
+        if ( ParamCount != m_constructorPropertiesCount )
+        {
+            wxLogError( _("Illegal Parameter Count for Create Method") ) ;
+            return ;
+        }
         m_constructor->Create( object , Params ) ;
     }
 
@@ -1755,6 +1775,7 @@ WXDLLIMPEXP_BASE wxObject *wxCreateDynamicObject(const wxChar *name);
 
 class WXDLLIMPEXP_BASE wxDynamicClassInfo : public wxClassInfo
 {
+    friend class WXDLLIMPEXP_BASE wxDynamicObject ;
 public :
     wxDynamicClassInfo( const wxChar *_UnitName, const wxChar *_ClassName , const wxClassInfo* superClass ) ;
     virtual ~wxDynamicClassInfo() ;
@@ -1792,6 +1813,9 @@ public :
 
     // renames an existing runtime-handler
     void RenameHandler( const wxChar *oldHandlerName , const wxChar *newHandlerName ) ;
+private :
+    struct wxDynamicClassInfoInternal ;
+    wxDynamicClassInfoInternal* m_data ;
 } ;
 
 // ----------------------------------------------------------------------------
@@ -1866,14 +1890,14 @@ public :
     _TYPEINFO_CLASSES(name, NULL , NULL) \
     const wxPropertyInfo *name::GetPropertiesStatic() { return (wxPropertyInfo*) NULL ; } \
     const wxHandlerInfo *name::GetHandlersStatic() { return (wxHandlerInfo*) NULL ; } \
-    WX_CONSTRUCTOR_DUMMY( name )
+    wxCONSTRUCTOR_DUMMY( name )
 
 #define IMPLEMENT_DYNAMIC_CLASS( name , basename ) \
     _IMPLEMENT_DYNAMIC_CLASS( name , basename , "" , NULL ) \
      _TYPEINFO_CLASSES(name, NULL , NULL) \
    wxPropertyInfo *name::GetPropertiesStatic() { return (wxPropertyInfo*) NULL ; } \
     wxHandlerInfo *name::GetHandlersStatic() { return (wxHandlerInfo*) NULL ; } \
-    WX_CONSTRUCTOR_DUMMY( name )
+    wxCONSTRUCTOR_DUMMY( name )
 
 #define IMPLEMENT_DYNAMIC_CLASS_XTI( name , basename , unit ) \
     _IMPLEMENT_DYNAMIC_CLASS( name , basename , unit , NULL ) \
@@ -1933,7 +1957,7 @@ public :
     _TYPEINFO_CLASSES(name, NULL , NULL) \
     wxPropertyInfo *name::GetPropertiesStatic() { return (wxPropertyInfo*) NULL ; } \
     wxHandlerInfo *name::GetHandlersStatic() { return (wxHandlerInfo*) NULL ; } \
-    WX_CONSTRUCTOR_DUMMY( name )
+    wxCONSTRUCTOR_DUMMY( name )
 
 #define IMPLEMENT_DYNAMIC_CLASS2_XTI( name , basename , basename2, unit) \
     _IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2 , unit) \
@@ -1973,6 +1997,9 @@ public :
 #define IMPLEMENT_CLASS IMPLEMENT_ABSTRACT_CLASS
 #define IMPLEMENT_CLASS2 IMPLEMENT_ABSTRACT_CLASS2
 
+#define wxBEGIN_EVENT_TABLE( a , b ) BEGIN_EVENT_TABLE( a , b )
+#define wxEND_EVENT_TABLE() END_EVENT_TABLE()
+
 // --------------------------------------------------------------------------
 // Collection Support
 // --------------------------------------------------------------------------