X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/289532452089421ddadbd4726a8469511a19ab76..5411e35f7b80709ee85056fb192c310569080421:/src/common/menucmn.cpp diff --git a/src/common/menucmn.cpp b/src/common/menucmn.cpp index c556c59c2d..517142f4e2 100644 --- a/src/common/menucmn.cpp +++ b/src/common/menucmn.cpp @@ -52,10 +52,6 @@ WX_DEFINE_LIST(wxMenuItemList) // XTI for wxMenu(Bar) // ---------------------------------------------------------------------------- -#if wxUSE_EXTENDED_RTTI - -WX_DEFINE_LIST( wxMenuInfoList ) - wxDEFINE_FLAGS( wxMenuStyle ) wxBEGIN_FLAGS( wxMenuStyle ) wxFLAGS_MEMBER(wxMENU_TEAROFF) @@ -64,11 +60,13 @@ wxEND_FLAGS( wxMenuStyle ) wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxMenu, wxEvtHandler, "wx/menu.h") wxCOLLECTION_TYPE_INFO( wxMenuItem *, wxMenuItemList ) ; +#if wxUSE_EXTENDED_RTTI template<> void wxCollectionToVariantArray( wxMenuItemList const &theList, - wxVariantBaseArray &value) + wxAnyList &value) { - wxListCollectionToVariantArray( theList, value ) ; + wxListCollectionToAnyList( theList, value ) ; } +#endif wxBEGIN_PROPERTIES_TABLE(wxMenu) wxEVENT_PROPERTY( Select, wxEVT_COMMAND_MENU_SELECTED, wxCommandEvent) @@ -94,20 +92,26 @@ wxBEGIN_FLAGS( wxMenuBarStyle ) wxFLAGS_MEMBER(wxMB_DOCKABLE) wxEND_FLAGS( wxMenuBarStyle ) +#if wxUSE_EXTENDED_RTTI // the negative id would lead the window (its superclass !) to // vetoe streaming out otherwise bool wxMenuBarStreamingCallback( const wxObject *WXUNUSED(object), wxObjectWriter *, - wxObjectReaderCallback *, wxVariantBaseArray & ) + wxObjectWriterCallback *, const wxStringToAnyHashMap & ) { return true; } +#endif wxIMPLEMENT_DYNAMIC_CLASS_XTI_CALLBACK(wxMenuBar, wxWindow, "wx/menu.h", \ wxMenuBarStreamingCallback) -wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxMenuInfo, wxObject, "wx/menu.h") -wxBEGIN_PROPERTIES_TABLE(wxMenuInfo) +#if wxUSE_EXTENDED_RTTI +WX_DEFINE_LIST( wxMenuInfoHelperList ) + +wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxMenuInfoHelper, wxObject, "wx/menu.h") + +wxBEGIN_PROPERTIES_TABLE(wxMenuInfoHelper) wxREADONLY_PROPERTY( Menu, wxMenu*, GetMenu, wxEMPTY_PARAMETER_VALUE, \ 0 /*flags*/, wxT("Helpstring"), wxT("group")) @@ -115,20 +119,22 @@ wxREADONLY_PROPERTY( Title, wxString, GetTitle, wxString(), \ 0 /*flags*/, wxT("Helpstring"), wxT("group")) wxEND_PROPERTIES_TABLE() -wxEMPTY_HANDLERS_TABLE(wxMenuInfo) +wxEMPTY_HANDLERS_TABLE(wxMenuInfoHelper) -wxCONSTRUCTOR_2( wxMenuInfo, wxMenu*, Menu, wxString, Title ) +wxCONSTRUCTOR_2( wxMenuInfoHelper, wxMenu*, Menu, wxString, Title ) -wxCOLLECTION_TYPE_INFO( wxMenuInfo *, wxMenuInfoList ) ; +wxCOLLECTION_TYPE_INFO( wxMenuInfoHelper *, wxMenuInfoHelperList ) ; -template<> void wxCollectionToVariantArray( wxMenuInfoList const &theList, - wxVariantBaseArray &value) +template<> void wxCollectionToVariantArray( wxMenuInfoHelperList const &theList, + wxAnyList &value) { - wxListCollectionToVariantArray( theList, value ) ; + wxListCollectionToAnyList( theList, value ) ; } +#endif + wxBEGIN_PROPERTIES_TABLE(wxMenuBar) -wxPROPERTY_COLLECTION( MenuInfos, wxMenuInfoList, wxMenuInfo*, AppendMenuInfo, \ +wxPROPERTY_COLLECTION( MenuInfos, wxMenuInfoHelperList, wxMenuInfoHelper*, AppendMenuInfo, \ GetMenuInfos, 0 /*flags*/, wxT("Helpstring"), wxT("group")) wxEND_PROPERTIES_TABLE() @@ -136,12 +142,22 @@ wxEMPTY_HANDLERS_TABLE(wxMenuBar) wxCONSTRUCTOR_DUMMY( wxMenuBar ) -#else -// IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) -// IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxWindow) -// IMPLEMENT_DYNAMIC_CLASS(wxMenuInfo, wxObject) -#endif +#if wxUSE_EXTENDED_RTTI +const wxMenuInfoHelperList& wxMenuBarBase::GetMenuInfos() const +{ + wxMenuInfoHelperList* list = const_cast< wxMenuInfoHelperList* > (& m_menuInfos); + WX_CLEAR_LIST( wxMenuInfoHelperList, *list); + for (size_t i = 0 ; i < GetMenuCount(); ++i) + { + wxMenuInfoHelper* info = new wxMenuInfoHelper(); + info->Create( GetMenu(i), GetMenuLabel(i)); + list->Append(info); + } + return m_menuInfos; +} + +#endif // ---------------------------------------------------------------------------- // XTI for wxMenuItem @@ -150,7 +166,7 @@ wxCONSTRUCTOR_DUMMY( wxMenuBar ) #if wxUSE_EXTENDED_RTTI bool wxMenuItemStreamingCallback( const wxObject *object, wxObjectWriter *, - wxObjectReaderCallback *, wxVariantBaseArray & ) + wxObjectWriterCallback *, const wxStringToAnyHashMap & ) { const wxMenuItem * mitem = wx_dynamic_cast(const wxMenuItem*, object); if ( mitem->GetMenu() && !mitem->GetMenu()->GetTitle().empty() ) @@ -164,6 +180,8 @@ bool wxMenuItemStreamingCallback( const wxObject *object, wxObjectWriter *, return true; } +#endif + wxBEGIN_ENUM( wxItemKind ) wxENUM_MEMBER( wxITEM_SEPARATOR ) wxENUM_MEMBER( wxITEM_NORMAL ) @@ -179,7 +197,7 @@ wxPROPERTY( Parent, wxMenu*, SetMenu, GetMenu, wxEMPTY_PARAMETER_VALUE, \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) wxPROPERTY( Id, int, SetId, GetId, wxEMPTY_PARAMETER_VALUE, \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) -wxPROPERTY( Text, wxString, SetText, GetText, wxString(), \ +wxPROPERTY( ItemLabel, wxString, SetItemLabel, GetItemLabel, wxString(), \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) wxPROPERTY( Help, wxString, SetHelp, GetHelp, wxString(), \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) @@ -187,11 +205,11 @@ wxREADONLY_PROPERTY( Kind, wxItemKind, GetKind, wxEMPTY_PARAMETER_VALUE, \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) wxPROPERTY( SubMenu, wxMenu*, SetSubMenu, GetSubMenu, wxEMPTY_PARAMETER_VALUE, \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) -wxPROPERTY( Enabled, bool, Enable, IsEnabled, wxVariantBase((bool)true), \ +wxPROPERTY( Enabled, bool, Enable, IsEnabled, wxAny((bool)true), \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) -wxPROPERTY( Checked, bool, Check, IsChecked, wxVariantBase((bool)false), \ +wxPROPERTY( Checked, bool, Check, IsChecked, wxAny((bool)false), \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) -wxPROPERTY( Checkable, bool, SetCheckable, IsCheckable, wxVariantBase((bool)false), \ +wxPROPERTY( Checkable, bool, SetCheckable, IsCheckable, wxAny((bool)false), \ 0 /*flags*/, wxT("Helpstring"), wxT("group") ) wxEND_PROPERTIES_TABLE() @@ -199,9 +217,6 @@ wxEMPTY_HANDLERS_TABLE(wxMenuItem) wxDIRECT_CONSTRUCTOR_6( wxMenuItem, wxMenu*, Parent, int, Id, wxString, \ Text, wxString, Help, wxItemKind, Kind, wxMenu*, SubMenu ) -#else -//IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) -#endif // ---------------------------------------------------------------------------- // wxMenuItemBase