X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a771da4036d846539990fb03b330c49c1e739060..dc874fb4cebf75d39cc97210e0f4b6a35403e4a6:/src/xrc/xh_menu.cpp diff --git a/src/xrc/xh_menu.cpp b/src/xrc/xh_menu.cpp index c23acf06aa..7174aa7dda 100644 --- a/src/xrc/xh_menu.cpp +++ b/src/xrc/xh_menu.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: xh_menu.cpp +// Name: src/xrc/xh_menu.cpp // Purpose: XRC resource for menus and menubars // Author: Vaclav Slavik // Created: 2000/03/05 @@ -8,10 +8,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "xh_menu.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -19,11 +15,14 @@ #pragma hdrstop #endif -#if wxUSE_XRC +#if wxUSE_XRC && wxUSE_MENUS #include "wx/xrc/xh_menu.h" -#include "wx/menu.h" -#include "wx/frame.h" + +#ifndef WX_PRECOMP + #include "wx/frame.h" + #include "wx/menu.h" +#endif IMPLEMENT_DYNAMIC_CLASS(wxMenuXmlHandler, wxXmlResourceHandler) @@ -37,7 +36,9 @@ wxObject *wxMenuXmlHandler::DoCreateResource() { if (m_class == wxT("wxMenu")) { - wxMenu *menu = new wxMenu(GetStyle()); + wxMenu *menu = m_instance ? wxStaticCast(m_instance, wxMenu) + : new wxMenu(GetStyle()); + wxString title = GetText(wxT("label")); wxString help = GetText(wxT("help")); @@ -48,12 +49,18 @@ wxObject *wxMenuXmlHandler::DoCreateResource() wxMenuBar *p_bar = wxDynamicCast(m_parent, wxMenuBar); if (p_bar) + { p_bar->Append(menu, title); + } else { wxMenu *p_menu = wxDynamicCast(m_parent, wxMenu); if (p_menu) + { p_menu->Append(GetID(), title, menu, help); + if (HasParam(wxT("enabled"))) + p_menu->Enable(GetID(), GetBool(wxT("enabled"))); + } } return menu; @@ -73,7 +80,7 @@ wxObject *wxMenuXmlHandler::DoCreateResource() wxString label = GetText(wxT("label")); wxString accel = GetText(wxT("accel"), false); wxString fullLabel = label; - if (!accel.IsEmpty()) + if (!accel.empty()) fullLabel << wxT("\t") << accel; wxItemKind kind = wxITEM_NORMAL; @@ -81,14 +88,14 @@ wxObject *wxMenuXmlHandler::DoCreateResource() kind = wxITEM_RADIO; if (GetBool(wxT("checkable"))) { - wxASSERT_MSG( kind == wxITEM_NORMAL, _T("can't have both checkable and radion button at once") ); + wxASSERT_MSG( kind == wxITEM_NORMAL, _T("can't have both checkable and radio button at once") ); kind = wxITEM_CHECK; } wxMenuItem *mitem = new wxMenuItem(p_menu, id, fullLabel, GetText(wxT("help")), kind); -#if wxUSE_OWNER_DRAWN +#if (!defined(__WXMSW__) && !defined(__WXPM__)) || wxUSE_OWNER_DRAWN if (HasParam(wxT("bitmap"))) mitem->SetBitmap(GetBitmap(wxT("bitmap"), wxART_MENU)); #endif @@ -142,4 +149,4 @@ bool wxMenuBarXmlHandler::CanHandle(wxXmlNode *node) return IsOfClass(node, wxT("wxMenuBar")); } -#endif // wxUSE_XRC +#endif // wxUSE_XRC && wxUSE_MENUS