//---------------------------------------------------------------- bool ToolBar::ReadNode(wxXmlNode* node) /** * \brief Read out a 'toolbar' xml element node. * See class description for structure of such an xml node. * \param node The 'toolbar' xml element node. * \return True on success; false otherwise. **/ { // Fehler überprüfen if (unlikely(node == NULL)) { wxLogError(_T("[penv::ToolBar::ReadNode] Cannot load xml node, because parameter argument is NULL.")); return (false); } if (unlikely(node->GetType() != wxXML_ELEMENT_NODE)) { wxLogError(_T("[penv::ToolBar::ReadNode] Cannot load, xml node must be an element node.")); return (false); } if (unlikely(node->GetName() != _T("toolbar"))) { wxLogError(_T("[penv::ToolBar::ReadNode] Cannot load, xml element node must have the name \"toolbar\". This element node has the name \"%s\"."), node->GetName().c_str()); return (false); } // Einlesen der Attribute der Toolbar if (unlikely(!node->HasProp(_T("id")))) { wxLogError(_T("[penv::ToolBar::ReadNode] Cannot load, xml element node must have the attribute \"id\". This element node has the name \"%s\"."), node->GetName().c_str()); return (false); } m_id = node->GetPropVal(_T("id"), wxEmptyString); CorrectToolbarId(); m_name = node->GetPropVal(_T("name"), wxEmptyString); m_visible = PenvHelper::ParseBoolean(node->GetPropVal(_T("visible"), _T("true"))); // Einlesen der Position und der ToolBar Items Environment* env = Environment::Get(); wxXmlNode* child = node->GetChildren(); while (child != NULL) { // Nicht Elemente überspringen if (unlikely(child->GetType() != wxXML_ELEMENT_NODE)) { child = child->GetNext(); continue; } if (child->GetName() == _T("position")) { wxString strg = child->GetNodeContent(); env->GetFrame()->GetManager()->LoadPaneInfo(strg, m_paneinfo); } if (child->GetName() == _T("toolitem")) { ToolBarItem* item = new ToolBarItem(); if (!item->ReadNode(child)) { wxLogWarning(_T("[penv::ToolBar::ReadNode] Toolbar item in toolbar \"%s\" could not be readed. Skipping..."), m_name.c_str()); delete item; } else { Add(item); } } child = child->GetNext(); } return (true); }