From 5174130757185b012241369e7377454b2423e51e Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Thu, 14 Aug 2003 18:05:30 +0000 Subject: [PATCH] rtti informations git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/button.cpp | 6 +++-- src/msw/checkbox.cpp | 22 +++++++++++++---- src/msw/frame.cpp | 3 ++- src/msw/gauge95.cpp | 24 +++++++++++++----- src/msw/notebook.cpp | 59 ++++++++++++++++++++++++++++++++++++-------- src/msw/radiobut.cpp | 24 +++++++++++++----- src/msw/spinbutt.cpp | 24 +++++++++++++----- src/msw/spinctrl.cpp | 20 +++++++++++---- src/msw/statbox.cpp | 15 ++++++++++- src/msw/stattext.cpp | 17 ++++++++++--- src/msw/textctrl.cpp | 19 +++++++++++--- src/msw/window.cpp | 34 ++++++++++++++++--------- 12 files changed, 206 insertions(+), 61 deletions(-) diff --git a/src/msw/button.cpp b/src/msw/button.cpp index 9a36d74f46..640365319a 100644 --- a/src/msw/button.cpp +++ b/src/msw/button.cpp @@ -51,13 +51,15 @@ IMPLEMENT_DYNAMIC_CLASS_XTI(wxButton, wxControl,"wx/button.h") WX_BEGIN_PROPERTIES_TABLE(wxButton) WX_DELEGATE( OnClick , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEvent ) - // default + + WX_PROPERTY_SET_AND_GET_BY_REF_RET_BOOL( Font , wxFont , SetFont , GetFont , ) + WX_PROPERTY_SET_BY_REF( Label,wxString, SetLabel, GetLabel, wxT("") ) WX_END_PROPERTIES_TABLE() WX_BEGIN_HANDLERS_TABLE(wxButton) WX_END_HANDLERS_TABLE() -WX_CONSTRUCTOR_5( wxButton , wxWindow* , Parent , wxWindowID , Id , wxString , Title , wxPoint , Position , wxSize , Size ) +WX_CONSTRUCTOR_6( wxButton , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle ) #else diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index ce3d9ceadd..c3ac6bac00 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -47,13 +47,25 @@ // implementation // ============================================================================ -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxCheckBox, wxControl,"wx/checkbox.h") + +WX_BEGIN_PROPERTIES_TABLE(wxCheckBox) + WX_DELEGATE( OnClick , wxEVT_COMMAND_CHECKBOX_CLICKED , wxCommandEvent ) + + WX_PROPERTY_SET_AND_GET_BY_REF_RET_BOOL( Font , wxFont , SetFont , GetFont , ) + WX_PROPERTY_SET_BY_REF( Label,wxString, SetLabel, GetLabel, wxT("") ) + WX_PROPERTY( Value ,bool, SetValue, GetValue, ) +WX_END_PROPERTIES_TABLE() -/* -TODO PROPERTIES : +WX_BEGIN_HANDLERS_TABLE(wxCheckBox) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxCheckBox , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle ) +#else +IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) +#endif -bool "checked" , 0 -*/ // ---------------------------------------------------------------------------- // wxCheckBox diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 7a94e8db1a..3ceedd4938 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -83,6 +83,7 @@ END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS_XTI(wxFrame, wxTopLevelWindow,"wx/frame.h") WX_BEGIN_PROPERTIES_TABLE(wxFrame) + WX_PROPERTY_SET_BY_REF( Title,wxString, SetTitle, GetTitle, wxT("") ) /* TODO PROPERTIES @@ -94,7 +95,7 @@ WX_END_PROPERTIES_TABLE() WX_BEGIN_HANDLERS_TABLE(wxFrame) WX_END_HANDLERS_TABLE() -WX_CONSTRUCTOR_5( wxFrame , wxWindow* , Parent , wxWindowID , Id , wxString , Title , wxPoint , Position , wxSize , Size ) +WX_CONSTRUCTOR_6( wxFrame , wxWindow* , Parent , wxWindowID , Id , wxString , Title , wxPoint , Position , wxSize , Size , long , WindowStyle) #else IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxTopLevelWindow) diff --git a/src/msw/gauge95.cpp b/src/msw/gauge95.cpp index 7d082b81b4..4299f2948e 100644 --- a/src/msw/gauge95.cpp +++ b/src/msw/gauge95.cpp @@ -66,15 +66,27 @@ // wxWin macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxGauge95, wxControl) - +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxGauge95, wxControl,"wx/gauge.h") + +WX_BEGIN_PROPERTIES_TABLE(wxGauge95) + WX_PROPERTY( Value , int , SetValue, GetValue, 0 ) + WX_PROPERTY( Range , int , SetRange, GetRange, 0 ) + WX_PROPERTY( ShadowWidth , int , SetShadowWidth, GetShadowWidth, 0 ) + WX_PROPERTY( BezelFace , int , SetBezelFace, GetBezelFace, 0 ) /* TODO PROPERTIES - range (long) - value (long) - shadow (ShadowWidth) - bezel (BezelFace) + style wxGA_HORIZONTAL */ +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxGauge95) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxGauge95 , wxWindow* , Parent , wxWindowID , Id , int , Range , wxPoint , Position , wxSize , Size , long , WindowStyle ) +#else +IMPLEMENT_DYNAMIC_CLASS(wxGauge95, wxControl) +#endif // ============================================================================ // implementation diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index 37ae63235e..ea3334de80 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -68,16 +68,6 @@ #include "wx/panel.h" #endif -/* - notebookpage - object - object_ref - label - selected - style - usenotebooksizer -*/ - // ---------------------------------------------------------------------------- // macros // ---------------------------------------------------------------------------- @@ -109,6 +99,10 @@ // event table // ---------------------------------------------------------------------------- +#include + +WX_DEFINE_LIST( wxNotebookPageInfoList ) ; + DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED) DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING) @@ -123,9 +117,27 @@ BEGIN_EVENT_TABLE(wxNotebook, wxControl) END_EVENT_TABLE() #if wxUSE_EXTENDED_RTTI + IMPLEMENT_DYNAMIC_CLASS_XTI(wxNotebook, wxControl,"wx/notebook.h") +IMPLEMENT_DYNAMIC_CLASS_XTI(wxNotebookPageInfo, wxObject , "wx/notebook.h" ) + +template<> const wxTypeInfo* wxGetTypeInfo( wxNotebookPageInfoList * ) +{ + static wxCollectionTypeInfo s_typeInfo( (wxTypeInfo*) wxGetTypeInfo( (wxNotebookPageInfo **) NULL) ) ; + return &s_typeInfo ; +} WX_BEGIN_PROPERTIES_TABLE(wxNotebook) + WX_PROPERTY_COLLECTION( PageInfos , wxNotebookPageInfoList , wxNotebookPageInfo* , AddPageInfo , GetPageInfos ) +/* + notebookpage + object + object_ref + label + selected + style + usenotebooksizer +*/ WX_END_PROPERTIES_TABLE() WX_BEGIN_HANDLERS_TABLE(wxNotebook) @@ -133,8 +145,22 @@ WX_END_HANDLERS_TABLE() WX_CONSTRUCTOR_4( wxNotebook , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size ) + +WX_BEGIN_PROPERTIES_TABLE(wxNotebookPageInfo) + WX_READONLY_PROPERTY( Page , wxNotebookPage* , GetPage , ) + WX_READONLY_PROPERTY( Text , wxString , GetText , wxEmptyString ) + WX_READONLY_PROPERTY( Selected , bool , GetSelected , false ) + WX_READONLY_PROPERTY( ImageId , int , GetImageId , -1 ) +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxNotebookPageInfo) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_4( wxNotebookPageInfo , wxNotebookPage* , Page , wxString , Text , bool , Selected , int , ImageId ) + #else IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) +IMPLEMENT_DYNAMIC_CLASS(wxNotebookPageInfo, wxObject ) #endif IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) @@ -146,6 +172,19 @@ IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) // wxNotebook construction // ---------------------------------------------------------------------------- +const wxNotebookPageInfoList& wxNotebook::GetPageInfos() const +{ + wxNotebookPageInfoList* list = const_cast< wxNotebookPageInfoList* >( &m_pageInfos ) ; + WX_CLEAR_LIST( wxNotebookPageInfoList , *list ) ; + for( int i = 0 ; i < GetPageCount() ; ++i ) + { + wxNotebookPageInfo *info = new wxNotebookPageInfo() ; + info->Create( const_cast(this)->GetPage(i) , GetPageText(i) , GetSelection() == i , GetPageImage(i) ) ; + list->Append( info ) ; + } + return m_pageInfos ; +} + // common part of all ctors void wxNotebook::Init() { diff --git a/src/msw/radiobut.cpp b/src/msw/radiobut.cpp index aa19342b60..abc19d681f 100644 --- a/src/msw/radiobut.cpp +++ b/src/msw/radiobut.cpp @@ -47,14 +47,26 @@ // wxRadioButton creation // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -/* - TODO PROPERTIES +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxRadioButton, wxControl,"wx/radiobut.h") + +WX_BEGIN_PROPERTIES_TABLE(wxRadioButton) + WX_DELEGATE( OnClick , wxEVT_COMMAND_RADIOBUTTON_SELECTED , wxCommandEvent ) + WX_PROPERTY_SET_AND_GET_BY_REF_RET_BOOL( Font , wxFont , SetFont , GetFont , ) + WX_PROPERTY_SET_BY_REF( Label,wxString, SetLabel, GetLabel, wxT("") ) + WX_PROPERTY( Value ,bool, SetValue, GetValue, ) +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxRadioButton) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxRadioButton , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle ) + +#else +IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) +#endif - label - value (bool , 0 ) -*/ void wxRadioButton::Init() { diff --git a/src/msw/spinbutt.cpp b/src/msw/spinbutt.cpp index 59f2672186..36de18694d 100644 --- a/src/msw/spinbutt.cpp +++ b/src/msw/spinbutt.cpp @@ -55,17 +55,29 @@ IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent) // wxWin macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxSpinButton, wxControl,"wx/spinbut.h") + +WX_BEGIN_PROPERTIES_TABLE(wxSpinButton) + WX_PROPERTY( Value , int , SetValue, GetValue, 0 ) + WX_PROPERTY( Min , int , SetMin, GetMin, 0 ) + WX_PROPERTY( Max , int , SetMax, GetMax, 0 ) /* TODO PROPERTIES - style wxSP_VERTICAL | wxSP_ARROW_KEYS - value wxSP_DEFAULT_VALUE - min wxSP_DEFAULT_MIN - max wxSP_DEFAULT_MAX - */ +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxSpinButton) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_5( wxSpinButton , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle ) +#else +IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) +#endif + + // ---------------------------------------------------------------------------- // wxSpinButton diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index 9f0d79c82e..f6aa2f460e 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -50,16 +50,26 @@ // macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl) +#if 0 // wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxSpinCtrl, wxControl,"wx/spinbut.h") +WX_BEGIN_PROPERTIES_TABLE(wxSpinCtrl) + WX_PROPERTY( Value , int , SetValue, GetValue, 0 ) + WX_PROPERTY( Min , int , SetMin, GetMin, 0 ) + WX_PROPERTY( Max , int , SetMax, GetMax, 0 ) /* TODO PROPERTIES style wxSP_ARROW_KEYS - value wxSP_DEFAULT_VALUE - min wxSP_DEFAULT_MIN - max wxSP_DEFAULT_MAX - */ +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxSpinCtrl) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_5( wxSpinCtrl , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle ) +#else +IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl) +#endif BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton) EVT_CHAR(wxSpinCtrl::OnChar) diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index 40a44c133f..162a8a30b6 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -43,11 +43,24 @@ // wxWin macros // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticBox, wxControl,"wx/statbox.h") + +WX_BEGIN_PROPERTIES_TABLE(wxStaticBox) + WX_PROPERTY_SET_BY_REF( Label,wxString, SetLabel, GetLabel, wxT("") ) /* TODO PROPERTIES : label */ +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxStaticBox) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxStaticBox , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle ) +#else +IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) +#endif // ============================================================================ // implementation diff --git a/src/msw/stattext.cpp b/src/msw/stattext.cpp index 0c89b20693..f05b7147cf 100644 --- a/src/msw/stattext.cpp +++ b/src/msw/stattext.cpp @@ -32,11 +32,20 @@ #include "wx/msw/private.h" #include +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticText, wxControl,"wx/stattext.h") + +WX_BEGIN_PROPERTIES_TABLE(wxStaticText) + WX_PROPERTY_SET_BY_REF( Label,wxString, SetLabel, GetLabel, wxT("") ) +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxStaticText) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxStaticText , wxWindow* , Parent , wxWindowID , Id , wxString , Label , wxPoint , Position , wxSize , Size , long , WindowStyle ) +#else IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -/* - TODO PROPERTIES : - label -*/ +#endif bool wxStaticText::Create(wxWindow *parent, wxWindowID id, diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index bdd65a6ad1..96a5085524 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -116,11 +116,22 @@ IMPLEMENT_DYNAMIC_CLASS(wxRichEditModule, wxModule) // event tables and other macros // ---------------------------------------------------------------------------- +#if wxUSE_EXTENDED_RTTI +IMPLEMENT_DYNAMIC_CLASS_XTI(wxTextCtrl, wxControl,"wx/textctrl.h") + +WX_BEGIN_PROPERTIES_TABLE(wxTextCtrl) + WX_PROPERTY_SET_AND_GET_BY_REF_RET_BOOL( Font , wxFont , SetFont , GetFont , ) + WX_PROPERTY( Value , wxString , SetValue, GetValue, wxEmptyString ) +WX_END_PROPERTIES_TABLE() + +WX_BEGIN_HANDLERS_TABLE(wxTextCtrl) +WX_END_HANDLERS_TABLE() + +WX_CONSTRUCTOR_6( wxTextCtrl , wxWindow* , Parent , wxWindowID , Id , wxString , Value , wxPoint , Position , wxSize , Size , long , WindowStyle) +#else IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) -/* - TODO PROPERTIES : - value -*/ +#endif + BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) EVT_CHAR(wxTextCtrl::OnChar) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 04cbcb8f03..1e9be60f14 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -233,26 +233,38 @@ static inline void wxBringWindowToTop(HWND hwnd) IMPLEMENT_DYNAMIC_CLASS_XTI(wxWindow, wxWindowBase,"wx/window.h") WX_BEGIN_PROPERTIES_TABLE(wxWindow) - // WX_DEFAULT_CHILD_PARENT_RELATION( Parent , Children ) ; - WX_READONLY_PROPERTY( Parent,wxWindow*, GetParent, ) + // Always constructor Properties first + + WX_READONLY_PROPERTY( Parent,wxWindow*, GetParent, ) WX_PROPERTY( Id,wxWindowID, SetId, GetId, -1 ) - // MaxHeight, Width , MinHeight , Width - // TODO switch label to control and title to toplevels - WX_PROPERTY_SET_BY_REF( Title,wxString, SetTitle, GetTitle, wxT("") ) - WX_PROPERTY_SET_BY_REF( Label,wxString, SetLabel, GetLabel, wxT("") ) WX_PROPERTY_SET_BY_REF( Position,wxPoint, SetPosition , GetPosition, wxPoint(-1,-1) ) // pos WX_PROPERTY_SET_BY_REF( Size,wxSize, SetSize, GetSize, wxSize(-1,-1) ) // size - WX_PROPERTY( WindowStyle , long , SetWindowStyle , GetWindowStyle , ) // style + WX_PROPERTY( WindowStyle , long , SetWindowStyle , GetWindowStyle , ) // style + + // Then all relations of the object graph + + WX_READONLY_PROPERTY_COLLECTION( Children , wxWindowList , wxWindowBase* , GetChildren ) + + // and finally all other properties + WX_PROPERTY( ExtraStyle , long , SetExtraStyle , GetExtraStyle , ) // extstyle - WX_PROPERTY( ThemeEnabled , bool , SetThemeEnabled , GetThemeEnabled , ) WX_PROPERTY_SET_BY_REF_RET_BOOL( BackgroundColour , wxColour , SetBackgroundColour , GetBackgroundColour , ) // bg WX_PROPERTY_SET_BY_REF_RET_BOOL( ForegroundColour , wxColour , SetForegroundColour , GetForegroundColour , ) // fg - //WX_PROPERTY_SET_BY_REF( Cursor , wxCursor , SetCursor , GetCursor , ) + WX_PROPERTY_SET_RET_BOOL( Enabled , bool , Enable , IsEnabled , wxxVariant((bool)true) ) + WX_PROPERTY_SET_RET_BOOL( Shown , bool , Show , IsShown , wxxVariant((bool)true) ) +#if 0 + // possible property candidates (not in xrc) or not valid in all subclasses + WX_PROPERTY_SET_BY_REF( Title,wxString, SetTitle, GetTitle, wxT("") ) WX_PROPERTY_SET_AND_GET_BY_REF_RET_BOOL( Font , wxFont , SetFont , GetFont , ) + WX_PROPERTY_SET_BY_REF( Label,wxString, SetLabel, GetLabel, wxT("") ) + // MaxHeight, Width , MinHeight , Width + // TODO switch label to control and title to toplevels + + WX_PROPERTY( ThemeEnabled , bool , SetThemeEnabled , GetThemeEnabled , ) + //WX_PROPERTY_SET_BY_REF( Cursor , wxCursor , SetCursor , GetCursor , ) // WX_PROPERTY( ToolTip , wxString , SetToolTip , GetToolTipText , ) WX_PROPERTY( AutoLayout , bool , SetAutoLayout , GetAutoLayout , ) - WX_PROPERTY_SET_RET_BOOL( Enabled , bool , Enable , IsEnabled , wxxVariant((bool)true) ) - WX_PROPERTY_SET_RET_BOOL( Shown , bool , Show , IsShown , wxxVariant((bool)true) ) +#endif WX_END_PROPERTIES_TABLE() WX_BEGIN_HANDLERS_TABLE(wxWindow) -- 2.49.0