예제 #1
0
        DnSpyFileList DoLoadList(DNSpySettings spySettings, string listName)
        {
            var doc = GetFileListsElement(spySettings);

            if (listName != null)
            {
                foreach (var listElem in doc.Elements(LIST_SECTION_NAME))
                {
                    if (SessionSettings.Unescape((string)listElem.Attribute("name")) == listName)
                    {
                        return(Initialize(Create(listElem)));
                    }
                }
            }
            XElement      firstList = doc.Elements(LIST_SECTION_NAME).FirstOrDefault();
            DnSpyFileList list;

            if (firstList != null)
            {
                list = Create(firstList);
            }
            else
            {
                list = new DnSpyFileList(options, listName ?? DefaultListName);
            }
            return(Initialize(list));
        }
예제 #2
0
 /// <summary>
 /// Saves the specifies assembly list into the config file.
 /// </summary>
 public static void SaveList(AssemblyList list)
 {
     if (!list.CanSave)
     {
         return;
     }
     ILSpySettings.Update(
         delegate(XElement root) {
         XElement doc = root.Element("AssemblyLists");
         if (doc == null)
         {
             doc = new XElement("AssemblyLists");
             root.Add(doc);
         }
         XElement listElement = doc.Elements("List").FirstOrDefault(e => SessionSettings.Unescape((string)e.Attribute("name")) == list.ListName);
         if (listElement != null)
         {
             listElement.ReplaceWith(list.SaveAsXml());
         }
         else
         {
             doc.Add(list.SaveAsXml());
         }
     });
 }
예제 #3
0
        AssemblyList DoLoadList(ILSpySettings spySettings, string listName)
        {
            XElement doc = spySettings["AssemblyLists"];

            if (listName != null)
            {
                foreach (var list in doc.Elements("List"))
                {
                    if (SessionSettings.Unescape((string)list.Attribute("name")) == listName)
                    {
                        return(new AssemblyList(list));
                    }
                }
            }
            XElement firstList = doc.Elements("List").FirstOrDefault();

            if (firstList != null)
            {
                return(new AssemblyList(firstList));
            }
            else
            {
                return(new AssemblyList(listName ?? DefaultListName));
            }
        }
예제 #4
0
        public AssemblyListManager(ILSpySettings spySettings)
        {
            XElement doc = spySettings["AssemblyLists"];

            foreach (var list in doc.Elements("List"))
            {
                AssemblyLists.Add(SessionSettings.Unescape((string)list.Attribute("name")));
            }
        }
예제 #5
0
        public DnSpyFileListManager(IDnSpyFileListOptions options, DNSpySettings spySettings)
        {
            this.options = options;
            var doc = GetFileListsElement(spySettings);

            foreach (var list in doc.Elements(LIST_SECTION_NAME))
            {
                FileLists.Add(SessionSettings.Unescape((string)list.Attribute("name")));
            }
        }
예제 #6
0
 /// <summary>
 /// Loads an assembly list from XML.
 /// </summary>
 public AssemblyList(XElement listElement)
     : this(SessionSettings.Unescape((string)listElement.Attribute("name")))
 {
     foreach (var asm in listElement.Elements("Assembly"))
     {
         try {
             OpenAssembly(SessionSettings.Unescape((string)asm));
         }
         catch (ArgumentException) {                 // invalid filename
         }
     }
     this.dirty = false;             // OpenAssembly() sets dirty, so reset it afterwards
 }
예제 #7
0
        DnSpyFileList Create(XElement listElement)
        {
            var name  = SessionSettings.Unescape((string)listElement.Attribute("name"));
            var list  = new DnSpyFileList(options, name);
            var elems = listElement.Elements(FILE_SECTION_NAME).ToList();

            elems.AddRange(listElement.Elements(FILE_SECTION_NAME_OLD));
            foreach (var asm in elems)
            {
                try {
                    list.OpenFile(SessionSettings.Unescape((string)asm));
                }
                catch {
                }
            }
            list.IsDirty = false;
            return(list);
        }
예제 #8
0
        public static SavedTabState FromXml(XElement child)
        {
            var savedState = new SavedTabState();

            savedState.Language = SessionSettings.Unescape((string)child.Attribute("language")) ?? "C#";

            foreach (var path in child.Elements("Path"))
            {
                savedState.Paths.Add(FullNodePathName.FromXml(path));
            }

            savedState.ActiveAutoLoadedAssemblies = new List <string>();
            var autoAsms = child.Element("ActiveAutoLoadedAssemblies");

            if (autoAsms != null)
            {
                savedState.ActiveAutoLoadedAssemblies.AddRange(autoAsms.Elements().Select(e => SessionSettings.Unescape((string)e)));
            }

            savedState.EditorPositionState = EditorPositionState.FromXml(child.Element("EditorPositionState"));

            return(savedState);
        }
예제 #9
0
        public bool DeleteList(string Name)
        {
            if (AssemblyLists.Contains(Name))
            {
                AssemblyLists.Remove(Name);

                ILSpySettings.Update(
                    delegate(XElement root)
                {
                    XElement doc = root.Element("AssemblyLists");
                    if (doc == null)
                    {
                        return;
                    }
                    XElement listElement = doc.Elements("List").FirstOrDefault(e => SessionSettings.Unescape((string)e.Attribute("name")) == Name);
                    if (listElement != null)
                    {
                        listElement.Remove();
                    }
                });
                return(true);
            }
            return(false);
        }
예제 #10
0
        public bool DeleteList(string Name)
        {
            if (FileLists.Contains(Name))
            {
                FileLists.Remove(Name);

                DNSpySettings.Update(
                    delegate(XElement root) {
                    XElement doc = root.Element(FILELISTS_SECTION_NAME);
                    if (doc == null)
                    {
                        root.Element(FILELISTS_SECTION_NAME_OLD);
                    }
                    if (doc == null)
                    {
                        return;
                    }
                    XElement listElement = doc.Elements(LIST_SECTION_NAME).FirstOrDefault(e => SessionSettings.Unescape((string)e.Attribute("name")) == Name);
                    if (listElement != null)
                    {
                        listElement.Remove();
                    }
                });
                return(true);
            }
            return(false);
        }
예제 #11
0
 /// <summary>
 /// Saves the specifies assembly list into the config file.
 /// </summary>
 public static void SaveList(DnSpyFileList list)
 {
     DNSpySettings.Update((root) => {
         var doc = root.Element(FILELISTS_SECTION_NAME) ?? root.Element(FILELISTS_SECTION_NAME_OLD);
         if (doc != null)
         {
             doc.Name = FILELISTS_SECTION_NAME;
         }
         if (doc == null)
         {
             doc = new XElement(FILELISTS_SECTION_NAME);
             root.Add(doc);
         }
         XElement listElement = doc.Elements(LIST_SECTION_NAME).FirstOrDefault(e => SessionSettings.Unescape((string)e.Attribute("name")) == list.Name);
         if (listElement != null)
         {
             listElement.ReplaceWith(SaveAsXml(list));
         }
         else
         {
             doc.Add(SaveAsXml(list));
         }
     });
 }