Esempio n. 1
0
        public static SavedTabState FromXml(XElement child)
        {
            var type = (string)child.Attribute("tab-type");

            //TODO: Remove the null check after some time after this commit. Only here so older files can be loaded.
            if (type == null || type == SavedDecompileTabState.TYPE)
            {
                return(SavedDecompileTabState.FromXmlInternal(child));
            }
            if (type == SavedHexTabState.TYPE)
            {
                return(SavedHexTabState.FromXmlInternal(child));
            }
            Debug.Fail(string.Format("Unknown type: {0}", type));
            return(null);
        }
Esempio n. 2
0
        internal static SavedDecompileTabState FromXmlInternal(XElement child)
        {
            var savedState = new SavedDecompileTabState();

            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;
        }
Esempio n. 3
0
        public override SavedTabState CreateSavedTabState()
        {
            var savedState = new SavedDecompileTabState();

            savedState.Language = Language.Name;
            savedState.Paths    = new List <FullNodePathName>();
            savedState.ActiveAutoLoadedAssemblies = new List <string>();
            foreach (var node in DecompiledNodes)
            {
                savedState.Paths.Add(node.CreateFullNodePathName());
                var autoAsm = GetAutoLoadedAssemblyNode(node);
                if (!string.IsNullOrEmpty(autoAsm))
                {
                    savedState.ActiveAutoLoadedAssemblies.Add(autoAsm);
                }
            }
            savedState.EditorPositionState = TextView.EditorPositionState;
            return(savedState);
        }
Esempio n. 4
0
        internal static SavedDecompileTabState FromXmlInternal(XElement child)
        {
            var savedState = new SavedDecompileTabState();

            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);
        }
Esempio n. 5
0
		public override SavedTabState CreateSavedTabState() {
			var savedState = new SavedDecompileTabState();
			savedState.Language = Language.Name;
			savedState.Paths = new List<FullNodePathName>();
			savedState.ActiveAutoLoadedAssemblies = new List<string>();
			foreach (var node in DecompiledNodes) {
				savedState.Paths.Add(node.CreateFullNodePathName());
				var autoAsm = GetAutoLoadedAssemblyNode(node);
				if (!string.IsNullOrEmpty(autoAsm))
					savedState.ActiveAutoLoadedAssemblies.Add(autoAsm);
			}
			savedState.EditorPositionState = TextView.EditorPositionState;
			return savedState;
		}
Esempio n. 6
0
        bool decompilerTextView_OnShowOutput(bool success, bool hasMovedCaret, DecompilerTextView textView, SavedDecompileTabState savedState)
        {
            if (!success)
                return false;

            if (IsValid(textView, savedState.EditorPositionState)) {
                textView.EditorPositionState = savedState.EditorPositionState;
                return true;
            }

            return false;
        }
Esempio n. 7
0
        DecompileTabState CreateDecompileTabState(DecompileTabState tabState, SavedDecompileTabState savedState, IList<ILSpyTreeNode> newNodes = null, bool decompile = true)
        {
            var nodes = new List<ILSpyTreeNode>(savedState.Paths.Count);
            if (newNodes != null)
                nodes.AddRange(newNodes);
            else {
                foreach (var asm in savedState.ActiveAutoLoadedAssemblies)
                    this.assemblyList.OpenAssembly(asm, true);
                foreach (var path in savedState.Paths) {
                    var node = assemblyListTreeNode.FindNodeByPath(path);
                    if (node == null) {
                        nodes = null;
                        break;
                    }
                    nodes.Add(node);
                }
            }
            if (decompile) {
                if (nodes != null) {
                    var tmpNodes = nodes.ToArray();
                    DecompileNodes(tabState, tmpNodes, false, (success, hasMovedCaret) => decompilerTextView_OnShowOutput(success, hasMovedCaret, tabState.TextView, savedState));
                }
                else
                    AboutPage.Display(tabState.TextView);
            }

            return tabState;
        }
Esempio n. 8
0
 DecompileTabState CreateDecompileTabState(SavedDecompileTabState savedState, IList<ILSpyTreeNode> newNodes = null, bool decompile = true)
 {
     var tabState = CreateNewDecompileTabState(Languages.GetLanguage(savedState.Language));
     return CreateDecompileTabState(tabState, savedState, newNodes, decompile);
 }