public static bool SaveCustomMeta(Workspace ws) { string bbPath = ws.getBlackboardPath(); XmlDocument bbfile = new XmlDocument(); try { FileManagers.SaveResult result = FileManagers.FileManager.MakeWritable(bbPath, Resources.SaveFileWarning); if (FileManagers.SaveResult.Succeeded != result) { return false; } bbfile.RemoveAll(); XmlDeclaration declaration = bbfile.CreateXmlDeclaration("1.0", "utf-8", null); bbfile.AppendChild(declaration); XmlElement meta = bbfile.CreateElement("meta"); bbfile.AppendChild(meta); SaveCustomTypes(bbfile, meta); SaveCustomMembers(bbfile, meta); bbfile.Save(bbPath); ws.IsBlackboardDirty = false; return true; } catch (Exception ex) { bbfile.RemoveAll(); string msgError = string.Format(Resources.SaveFileError, bbPath, ex.Message); MessageBox.Show(msgError, Resources.SaveError, MessageBoxButtons.OK); } return false; }
public static void PreLoadCustomMeta(Workspace ws) { _agentsXMLNode = null; _typesXMLNode = null; string bbPath = ws.getBlackboardPath(); if (string.IsNullOrEmpty(bbPath) || !File.Exists(bbPath)) { return; } XmlDocument bbfile = new XmlDocument(); try { FileStream fs = new FileStream(bbPath, FileMode.Open, FileAccess.Read, FileShare.Read); bbfile.Load(fs); fs.Close(); XmlNode root = bbfile.ChildNodes[1]; if (root.Name == "meta") { foreach(XmlNode xmlNode in root.ChildNodes) { if (xmlNode.Name == "agents") { _agentsXMLNode = xmlNode; } else if (xmlNode.Name == "types") { _typesXMLNode = xmlNode; } } } else if (root.Name == "agents") { _agentsXMLNode = root; } } catch (Exception e) { MessageBox.Show(e.Message, Resources.LoadError, MessageBoxButtons.OK); bbfile.RemoveAll(); } }