X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c37ffc1fef8187cbf3ec2c0efc8ba6ac5aa0e241..cc8cc54f8308660af5730d8c3da5ba4710dc0dbb:/src/xrc/xh_toolb.cpp diff --git a/src/xrc/xh_toolb.cpp b/src/xrc/xh_toolb.cpp index b35ee00b14..7e44ab77a1 100644 --- a/src/xrc/xh_toolb.cpp +++ b/src/xrc/xh_toolb.cpp @@ -7,7 +7,7 @@ // Copyright: (c) 2000 Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - + #ifdef __GNUG__ #pragma implementation "xh_toolb.h" #endif @@ -25,8 +25,10 @@ #if wxUSE_TOOLBAR -wxToolBarXmlHandler::wxToolBarXmlHandler() -: wxXmlResourceHandler(), m_isInside(FALSE), m_toolbar(NULL) +IMPLEMENT_DYNAMIC_CLASS(wxToolBarXmlHandler, wxXmlResourceHandler) + +wxToolBarXmlHandler::wxToolBarXmlHandler() +: wxXmlResourceHandler(), m_isInside(false), m_toolbar(NULL) { XRC_ADD_STYLE(wxTB_FLAT); XRC_ADD_STYLE(wxTB_DOCKABLE); @@ -37,14 +39,15 @@ wxToolBarXmlHandler::wxToolBarXmlHandler() XRC_ADD_STYLE(wxTB_NOICONS); XRC_ADD_STYLE(wxTB_NODIVIDER); XRC_ADD_STYLE(wxTB_NOALIGN); + AddWindowStyles(); } wxObject *wxToolBarXmlHandler::DoCreateResource() -{ +{ if (m_class == wxT("tool")) { wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XRC resource: tool not within a toolbar!")); - + if (GetPosition() != wxDefaultPosition) { m_toolbar->AddTool(GetID(), @@ -58,7 +61,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() GetText(wxT("longhelp"))); } else - { + { wxItemKind kind = wxITEM_NORMAL; if (GetBool(wxT("radio"))) kind = wxITEM_RADIO; @@ -67,7 +70,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() wxASSERT_MSG( kind == wxITEM_NORMAL, _T("can't have both toggleable and radion button at once") ); kind = wxITEM_CHECK; - } + } m_toolbar->AddTool(GetID(), GetText(wxT("label")), GetBitmap(wxT("bitmap"), wxART_TOOLBAR), @@ -78,14 +81,14 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() } return m_toolbar; // must return non-NULL } - + else if (m_class == wxT("separator")) { wxCHECK_MSG(m_toolbar, NULL, wxT("Incorrect syntax of XRC resource: separator not within a toolbar!")); m_toolbar->AddSeparator(); return m_toolbar; // must return non-NULL } - + else /**/ { int style = GetStyle(wxT("style"), wxNO_BORDER | wxTB_HORIZONTAL); @@ -94,7 +97,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() #endif XRC_MAKE_INSTANCE(toolbar, wxToolBar) - + toolbar->Create(m_parentAsWindow, GetID(), GetPosition(), @@ -121,14 +124,14 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() if (children_node == NULL) return toolbar; - m_isInside = TRUE; + m_isInside = true; m_toolbar = toolbar; wxXmlNode *n = children_node; while (n) { - if ((n->GetType() == wxXML_ELEMENT_NODE) && + if ((n->GetType() == wxXML_ELEMENT_NODE) && (n->GetName() == wxT("object") || n->GetName() == wxT("object_ref"))) { wxObject *created = CreateResFromNode(n, toolbar, NULL); @@ -141,13 +144,12 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() n = n->GetNext(); } - m_isInside = FALSE; + m_isInside = false; m_toolbar = NULL; toolbar->Realize(); - // FIXME: how can I create a toolbar without immediately setting it to the frame? - if (m_parentAsWindow) + if (m_parentAsWindow && !GetBool(wxT("dontattachtoframe"))) { wxFrame *parentFrame = wxDynamicCast(m_parent, wxFrame); if (parentFrame) @@ -161,7 +163,7 @@ wxObject *wxToolBarXmlHandler::DoCreateResource() bool wxToolBarXmlHandler::CanHandle(wxXmlNode *node) { return ((!m_isInside && IsOfClass(node, wxT("wxToolBar"))) || - (m_isInside && IsOfClass(node, wxT("tool"))) || + (m_isInside && IsOfClass(node, wxT("tool"))) || (m_isInside && IsOfClass(node, wxT("separator")))); }