Beispiel #1
0
 /// <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 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();
     }
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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("");
        }
Beispiel #6
0
 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)
         {
         }
     }
 }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
        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);
            }
        }
Beispiel #9
0
        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;
        }
Beispiel #12
0
 public void ReleaseParserWrapper(ParserWrapper pw)
 {
     parserWrapper.ReleaseParserWrapper(pw);
 }
Beispiel #13
0
 public void ReleaseParserWrapper(ParserWrapper pw)
 {
     parserWrapper.ReleaseParserWrapper(pw);
 }