/// <summary> /// Чтение дерева из файла /// </summary> public PointOfInterest DeserializeAspect(string FileName, ParserWrapper _parserWrapper) { try { XmlDocument Doc = new XmlDocument(); Doc.LoadXml(File.ReadAllText(FileName)); if (Doc.DocumentElement.Attributes != null && Doc.DocumentElement.Attributes.Count != 0) { foreach (XmlAttribute attr in Doc.DocumentElement.Attributes) { if (attr.Name == "Version") { if (attr.InnerText == "2") { return(AspectFileV2Reader.BuildTreeFromXML(Doc.DocumentElement.ChildNodes[0])); } if (attr.InnerText == "3") { return(AspectFileV3Reader.BuildTreeFromXML(Doc.DocumentElement.ChildNodes[0], _parserWrapper)); } } } } //default = version 1 return(AspectFileV1Reader.BuildTreeFromXML(Doc.DocumentElement)); } catch (Exception) { } return(null); }
public void ReadAspectFile(string path, ParserWrapper _parserWrapper) { ClearAspect(); if (File.Exists(path)) { manager.WorkingAspect = manager.DeserializeAspect(path, _parserWrapper); manager.WorkingDir = Path.GetDirectoryName(path) + "\\"; manager.isFileSaved = true; RebuildTree(); } }
public TreeManager(string ParsersPath = "") { //if (ParsersPath == "") parserWrapper = new ParserWrapperPool(); //else //parserWrapper = new ParserWrapper(Environment.CurrentDirectory); ParserWrapper pw = parserWrapper.GetParserWrapper(); parserIDs = pw.GetParserIDs(); parserWrapper.ReleaseParserWrapper(pw); }
private void OpenAspectFile(string fileName) { ParserWrapper pw = treeManager.GetParserWrapper(); Adapter.ReadAspectFile(fileName, pw); treeManager.ReleaseParserWrapper(pw); Manager.WorkingDir = Path.GetDirectoryName(fileName); CurrentAspectFileName = fileName; SynchronizeUndoButtons(); tsbSave.Enabled = true; сохранитьToolStripMenuItem.Enabled = true; SetStatus(""); }
private void ImportToolStripMenuItem_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) { try { ParserWrapper pw = treeManager.GetParserWrapper(); PointOfInterest subAspect = Manager.DeserializeAspect(openFileDialog.FileName, pw); treeManager.ReleaseParserWrapper(pw); if (subAspect == null) { return; } Adapter.InsertNode(tvAspects.SelectedNode, subAspect); } catch (Exception exc) { } } }
private void Parse(string Filename, string Text, DateTime ModifiedTime) { ParserWrapper pw = parserWrapper.GetParserWrapper(); PointOfInterest Point = pw.ParseText(Text, Filename); _LastTimeErrors = pw.GetLastParseErrors(); parserWrapper.ReleaseParserWrapper(pw); if (FilenameToTree.ContainsKey(Filename)) { FilenameToText[Filename] = Text; FilenameToTree[Filename] = Point; FilenameToDateTime[Filename] = ModifiedTime; } else { FilenameToText.AddOrUpdate(Filename, Text, (k, v) => v); FilenameToTree.AddOrUpdate(Filename, Point, (k, v) => v); FilenameToDateTime.AddOrUpdate(Filename, ModifiedTime, (k, v) => v); } }
private void tvAspects_DragDrop(object sender, DragEventArgs e) { try { if (e.Data.GetDataPresent(Strings.TreeNodeType, false)) { TreeNode newParent; int pos; CursorHelper.GetPositionToInsert(tvAspects, Adapter, e.X, e.Y, out newParent, out pos); TreeNode NewNode = (TreeNode)e.Data.GetData(Strings.TreeNodeType); Adapter.MoveNode(NewNode, newParent, pos); SynchronizeUndoButtons(); } else if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string fileName = ((string[])(e.Data.GetData(DataFormats.FileDrop)))[0]; try { ParserWrapper pw = treeManager.GetParserWrapper(); PointOfInterest subAspect = Manager.DeserializeAspect(fileName, pw); treeManager.ReleaseParserWrapper(pw); if (subAspect != null) { Point pt = tvAspects.PointToClient(new Point(e.X, e.Y)); TreeNode newParent = tvAspects.GetNodeAt(pt); Adapter.InsertNode(newParent, subAspect); } } catch (Exception exc) { SetStatus(Strings.UnsupportedAspectFile); } SynchronizeUndoButtons(); } } catch (Exception exc) { ExceptionInfoHelper.ShowInfo(exc); } }
public static PointOfInterest BuildTreeFromXML(XmlNode Node, ParserWrapper _parserWrapper) { PointOfInterest Result = new PointOfInterest(); Result.FileName = TryFindValue(Node, "FileName"); Result.Title = Node.Attributes["Name"]?.InnerText; Result.ID = Node.Attributes["ID"]?.InnerText; Result.Note = TryFindValue(Node, "Note"); Result.Text = TryFindValue(Node, "Text"); float.TryParse(Node.Attributes["NL"]?.InnerText, out Result.NearL); float.TryParse(Node.Attributes["NG"]?.InnerText, out Result.NearG); dynamic Lexer = _parserWrapper.GetLexer(Result.FileName ?? "")?.Scanner ?? new CommonLexer.Scanner(); XmlNode CTX = TryFindNode(Node, "OCtx"); if (CTX != null) { Result.Context = TryReadOuterContext(CTX, Lexer); } XmlNode InnerCTX = TryFindNode(Node, "ICtx"); if (InnerCTX != null) { Result.InnerContext = TryReadInnerContext(InnerCTX, Lexer); } XmlNode Items = TryFindNode(Node, "Items"); if (Items != null) { Result.Items = new List <PointOfInterest>(); foreach (XmlNode subNode in Items) { Result.Items.Add(BuildTreeFromXML(subNode, _parserWrapper)); } } return(Result); }
/// <summary> /// Чтение дерева из файла /// </summary> public PointOfInterest DeserializeAspect(string FileName, ParserWrapper _parserWrapper) { try { XmlDocument Doc = new XmlDocument(); Doc.LoadXml(File.ReadAllText(FileName)); if (Doc.DocumentElement.Attributes != null && Doc.DocumentElement.Attributes.Count != 0) foreach (XmlAttribute attr in Doc.DocumentElement.Attributes) if (attr.Name == "Version") { if (attr.InnerText == "2") return AspectFileV2Reader.BuildTreeFromXML(Doc.DocumentElement.ChildNodes[0]); if (attr.InnerText == "3") return AspectFileV3Reader.BuildTreeFromXML(Doc.DocumentElement.ChildNodes[0], _parserWrapper); } //default = version 1 return AspectFileV1Reader.BuildTreeFromXML(Doc.DocumentElement); } catch (Exception) { } return null; }
public static PointOfInterest BuildTreeFromXML(XmlNode Node, ParserWrapper _parserWrapper) { PointOfInterest Result = new PointOfInterest(); Result.FileName = TryFindValue(Node, "FileName"); Result.Title = Node.Attributes["Name"]?.InnerText; Result.ID = Node.Attributes["ID"]?.InnerText; Result.Note = TryFindValue(Node, "Note"); Result.Text = TryFindValue(Node, "Text"); float.TryParse(Node.Attributes["NL"]?.InnerText, out Result.NearL); float.TryParse(Node.Attributes["NG"]?.InnerText, out Result.NearG); dynamic Lexer = _parserWrapper.GetLexer(Result.FileName ?? "")?.Scanner ?? new CommonLexer.Scanner(); XmlNode CTX = TryFindNode(Node, "OCtx"); if (CTX != null) Result.Context = TryReadOuterContext(CTX, Lexer); XmlNode InnerCTX = TryFindNode(Node, "ICtx"); if (InnerCTX != null) Result.InnerContext = TryReadInnerContext(InnerCTX, Lexer); XmlNode Items = TryFindNode(Node, "Items"); if (Items != null) { Result.Items = new List<PointOfInterest>(); foreach (XmlNode subNode in Items) Result.Items.Add(BuildTreeFromXML(subNode, _parserWrapper)); } return Result; }
public void ReleaseParserWrapper(ParserWrapper pw) { parserWrapper.ReleaseParserWrapper(pw); }