- m_toolbar->AddTool(GetID(),
- GetText(wxT("label")),
- GetBitmap(wxT("bitmap"), wxART_TOOLBAR),
- GetBitmap(wxT("bitmap2"), wxART_TOOLBAR),
- kind,
- GetText(wxT("tooltip")),
- GetText(wxT("longhelp")));
+#if wxUSE_MENUS
+ // check whether we have dropdown tag inside
+ wxMenu *menu = NULL; // menu for drop down items
+ wxXmlNode * const nodeDropdown = GetParamNode("dropdown");
+ if ( nodeDropdown )
+ {
+ if ( kind != wxITEM_NORMAL )
+ {
+ ReportParamError
+ (
+ "dropdown",
+ "drop-down tool can't have neither <radio> nor <toggle> properties"
+ );
+ }
+
+ kind = wxITEM_DROPDOWN;
+
+ // also check for the menu specified inside dropdown (it is
+ // optional and may be absent for e.g. dynamically-created
+ // menus)
+ wxXmlNode * const nodeMenu = nodeDropdown->GetChildren();
+ if ( nodeMenu )
+ {
+ wxObject *res = CreateResFromNode(nodeMenu, NULL);
+ menu = wxDynamicCast(res, wxMenu);
+ if ( !menu )
+ {
+ ReportError
+ (
+ nodeMenu,
+ "drop-down tool contents can only be a wxMenu"
+ );
+ }
+
+ if ( nodeMenu->GetNext() )
+ {
+ ReportError
+ (
+ nodeMenu->GetNext(),
+ "unexpected extra contents under drop-down tool"
+ );
+ }
+ }
+ }
+#endif
+ wxToolBarToolBase * const tool =
+ m_toolbar->AddTool
+ (
+ GetID(),
+ GetText(wxT("label")),
+ GetBitmap(wxT("bitmap"), wxART_TOOLBAR, m_toolSize),
+ GetBitmap(wxT("bitmap2"), wxART_TOOLBAR, m_toolSize),
+ kind,
+ GetText(wxT("tooltip")),
+ GetText(wxT("longhelp"))
+ );