wxMenuXmlHandler::wxMenuXmlHandler() :
- wxXmlResourceHandler(), m_InsideMenu(FALSE)
+ wxXmlResourceHandler(), m_insideMenu(FALSE)
{
ADD_STYLE(wxMENU_TEAROFF);
}
wxObject *wxMenuXmlHandler::DoCreateResource()
{
- if (m_Node->GetName() == _T("menu"))
+ if (m_class == wxT("wxMenu"))
{
wxMenu *menu = new wxMenu(GetStyle());
- wxString title = GetText(_T("label"));
- wxString help = GetText(_T("help"));
-
- bool oldins = m_InsideMenu;
- m_InsideMenu = TRUE;
+ wxString title = GetText(wxT("label"));
+ wxString help = GetText(wxT("help"));
+
+ bool oldins = m_insideMenu;
+ m_insideMenu = TRUE;
CreateChildren(menu, TRUE/*only this handler*/);
- m_InsideMenu = oldins;
+ m_insideMenu = oldins;
- wxMenuBar *p_bar = wxDynamicCast(m_Parent, wxMenuBar);
+ wxMenuBar *p_bar = wxDynamicCast(m_parent, wxMenuBar);
if (p_bar)
p_bar->Append(menu, title);
else
{
- wxMenu *p_menu = wxDynamicCast(m_Parent, wxMenu);
+ wxMenu *p_menu = wxDynamicCast(m_parent, wxMenu);
if (p_menu)
p_menu->Append(GetID(), title, menu, help);
}
else
{
- wxMenu *p_menu = wxDynamicCast(m_Parent, wxMenu);
+ wxMenu *p_menu = wxDynamicCast(m_parent, wxMenu);
- if (m_Node->GetName() == _T("separator"))
+ if (m_class == wxT("separator"))
p_menu->AppendSeparator();
- else if (m_Node->GetName() == _T("break"))
+ else if (m_class == wxT("break"))
p_menu->Break();
- else
+ else /*wxMenuItem*/
{
int id = GetID();
- bool checkable = GetBool(_T("checkable"));
- p_menu->Append(id, GetText(_T("label")),
- GetText(_T("help")), checkable);
- if (id != -1)
- {
- p_menu->Enable(id, GetBool(_T("enabled"), TRUE));
- if (checkable) p_menu->Check(id, GetBool(_T("checked")));
- }
+ bool checkable = GetBool(wxT("checkable"));
+ wxString label = GetText(wxT("label"));
+ wxString accel = GetText(wxT("accel"));
+ wxString fullLabel = label;
+ if (!accel.IsEmpty())
+ fullLabel << wxT("\t") << accel;
+
+ wxMenuItem *mitem = new wxMenuItem(p_menu, id, fullLabel,
+ GetText(wxT("help")), checkable);
+
+#if wxCHECK_VERSION(2,3,0) || defined(__WXMSW__)
+ if (HasParam(wxT("bitmap")))
+ mitem->SetBitmap(GetBitmap(wxT("bitmap")));
+#endif
+ p_menu->Append(mitem);
+ mitem->Enable(GetBool(wxT("enabled"), TRUE));
+ if (checkable) mitem->Check(GetBool(wxT("checked")));
}
return NULL;
}
bool wxMenuXmlHandler::CanHandle(wxXmlNode *node)
{
- return node->GetName() == _T("menu") ||
- (m_InsideMenu &&
- (node->GetName() == _T("menuitem") ||
- node->GetName() == _T("break") ||
- node->GetName() == _T("separator"))
+ return IsOfClass(node, wxT("wxMenu")) ||
+ (m_insideMenu &&
+ (IsOfClass(node, wxT("wxMenuItem")) ||
+ IsOfClass(node, wxT("break")) ||
+ IsOfClass(node, wxT("separator")))
);
}
bool wxMenuBarXmlHandler::CanHandle(wxXmlNode *node)
{
- return node->GetName() == _T("menubar");
+ return IsOfClass(node, wxT("wxMenuBar"));
}