+ new wxHandlerInfo( m_firstHandler , this , handlerName , address , eventClassInfo ) ;
+}
+
+// removes an existing runtime-property
+void wxDynamicClassInfo::RemoveProperty( const wxChar *propertyName )
+{
+ for ( wxDynamicObjectList::iterator iter = m_data->m_dynamicObjects.begin() ; iter != m_data->m_dynamicObjects.end() ; ++iter )
+ (*iter)->RemoveProperty( propertyName ) ;
+ delete FindPropertyInfoInThisClass(propertyName) ;
+}
+
+// removes an existing runtime-handler
+void wxDynamicClassInfo::RemoveHandler( const wxChar *handlerName )
+{
+ delete FindHandlerInfoInThisClass(handlerName) ;
+}
+
+// renames an existing runtime-property
+void wxDynamicClassInfo::RenameProperty( const wxChar *oldPropertyName , const wxChar *newPropertyName )
+{
+ wxPropertyInfo* pi = FindPropertyInfoInThisClass(oldPropertyName) ;
+ wxASSERT_MSG( pi ,wxT("not existing property") ) ;
+ pi->m_name = newPropertyName ;
+ dynamic_cast<wxGenericPropertyAccessor*>(pi->GetAccessor())->RenameProperty( oldPropertyName , newPropertyName ) ;
+ for ( wxDynamicObjectList::iterator iter = m_data->m_dynamicObjects.begin() ; iter != m_data->m_dynamicObjects.end() ; ++iter )
+ (*iter)->RenameProperty( oldPropertyName , newPropertyName ) ;
+}
+
+// renames an existing runtime-handler
+void wxDynamicClassInfo::RenameHandler( const wxChar *oldHandlerName , const wxChar *newHandlerName )
+{
+ wxASSERT_MSG(FindHandlerInfoInThisClass(oldHandlerName),wxT("not existing handler") ) ;
+ FindHandlerInfoInThisClass(oldHandlerName)->m_name = newHandlerName ;