Пример #1
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());
         }
     });
 }
Пример #2
0
        public MainWindow()
        {
            instance                 = this;
            spySettings              = ILSpySettings.Load();
            this.sessionSettings     = new SessionSettings(spySettings);
            this.assemblyListManager = new AssemblyListManager(spySettings);

            this.Icon = new BitmapImage(new Uri("pack://application:,,,/ILSpy;component/images/ILSpy.ico"));

            this.DataContext = sessionSettings;
            this.Left        = sessionSettings.WindowBounds.Left;
            this.Top         = sessionSettings.WindowBounds.Top;
            this.Width       = sessionSettings.WindowBounds.Width;
            this.Height      = sessionSettings.WindowBounds.Height;
            // TODO: validate bounds (maybe a monitor was removed...)
            this.WindowState = sessionSettings.WindowState;

            InitializeComponent();
            App.CompositionContainer.ComposeParts(this);
            mainPane.Content = decompilerTextView;

            if (sessionSettings.SplitterPosition > 0 && sessionSettings.SplitterPosition < 1)
            {
                leftColumn.Width  = new GridLength(sessionSettings.SplitterPosition, GridUnitType.Star);
                rightColumn.Width = new GridLength(1 - sessionSettings.SplitterPosition, GridUnitType.Star);
            }
            sessionSettings.FilterSettings.PropertyChanged += filterSettings_PropertyChanged;

            InitMainMenu();
            InitToolbar();
            ContextMenuProvider.Add(treeView);

            this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
        }
Пример #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 MainWindow()
        {
            instance = this;
            var spySettings = ILSpySettings.Load();

            this.spySettingsForMainWindow_Loaded = spySettings;
            this.sessionSettings     = new SessionSettings(spySettings);
            this.assemblyListManager = new AssemblyListManager(spySettings);

            this.Icon = new BitmapImage(new Uri("pack://application:,,,/ILSpy;component/images/ILSpy.ico"));

            this.DataContext = new MainWindowDataContext {
                Workspace       = DockWorkspace.Instance,
                SessionSettings = sessionSettings
            };

            DockWorkspace.Instance.LoadSettings(sessionSettings);
            InitializeComponent();
            DockWorkspace.Instance.InitializeLayout(DockManager);
            sessionSettings.FilterSettings.PropertyChanged += filterSettings_PropertyChanged;

            InitMainMenu();
            InitToolbar();
            ContextMenuProvider.Add(treeView);

            this.Loaded += MainWindow_Loaded;
        }
Пример #5
0
        public MainWindow()
        {
            instance                 = this;
            spySettings              = ILSpySettings.Load();
            this.sessionSettings     = new SessionSettings(spySettings);
            this.assemblyListManager = new AssemblyListManager(spySettings);

            this.Icon = new WindowIcon("Images/ILSpy.png");

            this.DataContext = sessionSettings;

            InitializeComponent();

#if DEBUG
            this.AttachDevTools();
#endif

            decompilerTextView = App.ExportProvider.GetExportedValue <DecompilerTextView>();
            mainPane.Content   = decompilerTextView;

            if (sessionSettings.SplitterPosition > 0 && sessionSettings.SplitterPosition < 1)
            {
                leftColumn.Width  = new GridLength(sessionSettings.SplitterPosition, GridUnitType.Star);
                rightColumn.Width = new GridLength(1 - sessionSettings.SplitterPosition, GridUnitType.Star);
            }
            sessionSettings.FilterSettings.PropertyChanged += filterSettings_PropertyChanged;

            ContextMenuProvider.Add(treeView, decompilerTextView);
        }
Пример #6
0
        public MainWindow()
        {
            instance                 = this;
            spySettings              = ILSpySettings.Load();
            this.sessionSettings     = new SessionSettings(spySettings);
            this.assemblyListManager = new AssemblyListManager(spySettings);

            this.Icon = new BitmapImage(new Uri("pack://application:,,,/ILSpy;component/images/ILSpy.ico"));

            this.DataContext = sessionSettings;

            InitializeComponent();
            App.CompositionContainer.ComposeParts(this);
            mainPane.Content = decompilerTextView;

            if (sessionSettings.SplitterPosition > 0 && sessionSettings.SplitterPosition < 1)
            {
                leftColumn.Width  = new GridLength(sessionSettings.SplitterPosition, GridUnitType.Star);
                rightColumn.Width = new GridLength(1 - sessionSettings.SplitterPosition, GridUnitType.Star);
            }
            sessionSettings.FilterSettings.PropertyChanged += filterSettings_PropertyChanged;

            InitMainMenu();
            InitToolbar();
            ContextMenuProvider.Add(treeView, decompilerTextView);

            this.Loaded += MainWindow_Loaded;
        }
Пример #7
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));
        }
Пример #8
0
        public MainWindow()
        {
            instance = this;
            var spySettings = ILSpySettings.Load();

            this.spySettingsForMainWindow_Loaded = spySettings;
            this.sessionSettings     = new SessionSettings(spySettings);
            this.assemblyListManager = new AssemblyListManager(spySettings);

            this.Icon = new BitmapImage(new Uri("pack://application:,,,/ILSpy;component/images/ILSpy.ico"));

            this.DataContext = sessionSettings;

            InitializeComponent();
            decompilerTextView = App.ExportProvider.GetExportedValue <DecompilerTextView>();
            mainPane.Content   = decompilerTextView;

            sessionSettings.DockLayout.Deserialize(new XmlLayoutSerializer(DockManager));

            sessionSettings.FilterSettings.PropertyChanged += filterSettings_PropertyChanged;

            InitMainMenu();
            InitToolbar();
            ContextMenuProvider.Add(treeView, decompilerTextView);

            this.Loaded += MainWindow_Loaded;
        }
Пример #9
0
 static XElement SaveAsXml(DnSpyFileList list)
 {
     return(new XElement(
                LIST_SECTION_NAME,
                new XAttribute("name", SessionSettings.Escape(list.Name)),
                list.GetDnSpyFiles().Where(file => !file.IsAutoLoaded && file.CanBeSavedToSettingsFile && !string.IsNullOrWhiteSpace(file.Filename)).Select(asm => new XElement(FILE_SECTION_NAME, SessionSettings.Escape(asm.Filename)))
                ));
 }
Пример #10
0
        public AssemblyListManager(ILSpySettings spySettings)
        {
            XElement doc = spySettings["AssemblyLists"];

            foreach (var list in doc.Elements("List"))
            {
                AssemblyLists.Add(SessionSettings.Unescape((string)list.Attribute("name")));
            }
        }
Пример #11
0
 /// <summary>
 /// Saves this assembly list to XML.
 /// </summary>
 internal XElement SaveAsXml()
 {
     lock (assemblies) {
         return(new XElement(
                    "List",
                    new XAttribute("name", SessionSettings.Escape(this.ListName)),
                    assemblies.Where(asm => !asm.IsAutoLoaded && !string.IsNullOrWhiteSpace(asm.FileName)).Select(asm => new XElement("Assembly", SessionSettings.Escape(asm.FileName)))
                    ));
     }
 }
Пример #12
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")));
            }
        }
Пример #13
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
 }
Пример #14
0
        public XElement ToXml(XElement xml)
        {
            xml.SetAttributeValue("language", SessionSettings.Escape(Language));

            foreach (var path in Paths)
            {
                xml.Add(path.ToXml(new XElement("Path")));
            }

            var asms = new XElement("ActiveAutoLoadedAssemblies", ActiveAutoLoadedAssemblies.Select(p => new XElement("Node", SessionSettings.Escape(p))));

            xml.Add(asms);

            xml.Add(EditorPositionState.ToXml(new XElement("EditorPositionState")));

            return(xml);
        }
Пример #15
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);
        }
Пример #16
0
        public MainWindow()
        {
            instance = this;
            var spySettings = ILSpySettings.Load();

            this.spySettingsForMainWindow_Loaded = spySettings;
            this.sessionSettings     = new SessionSettings(spySettings);
            this.assemblyListManager = new AssemblyListManager(spySettings);

            this.Icon = new BitmapImage(new Uri("pack://application:,,,/ILSpy;component/images/ILSpy.ico"));

            this.DataContext = new MainWindowDataContext {
                Workspace       = DockWorkspace.Instance,
                SessionSettings = sessionSettings
            };

            DockWorkspace.Instance.LoadSettings(sessionSettings);

            InitializeComponent();

            XmlLayoutSerializer serializer = new XmlLayoutSerializer(DockManager);

            serializer.LayoutSerializationCallback += DockWorkspace.Instance.LayoutSerializationCallback;
            try {
                sessionSettings.DockLayout.Deserialize(serializer);
            } finally {
                serializer.LayoutSerializationCallback -= DockWorkspace.Instance.LayoutSerializationCallback;
            }

            DockWorkspace.Instance.EnsureUnclosablePanes();

            sessionSettings.FilterSettings.PropertyChanged += filterSettings_PropertyChanged;

            InitMainMenu();
            InitToolbar();
            ContextMenuProvider.Add(treeView);

            this.Loaded += MainWindow_Loaded;
        }
Пример #17
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);
        }
Пример #18
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);
        }
Пример #19
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);
        }
Пример #20
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));
         }
     });
 }