void FileTreeView_NodeActivated(object sender, FileTreeNodeActivatedEventArgs e) { e.Handled = true; var asmRefNode = e.Node as IAssemblyReferenceNode; if (asmRefNode != null) { var asm = fileTreeView.FileManager.Resolve(asmRefNode.AssemblyRef, asmRefNode.GetModule()); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { var asmNode = fileTreeView.FindNode(asm); if (asmNode != null) { fileTreeView.TreeView.SelectItems(new ITreeNodeData[] { asmNode }); } })); return; } var tab = ActiveTabContentImpl; if (tab == null) { return; } SetFocus(tab); }
void FileTreeView_NodeActivated(object sender, FileTreeNodeActivatedEventArgs e) { e.Handled = true; var asmRefNode = e.Node as IAssemblyReferenceNode; if (asmRefNode != null) { var asm = fileTreeView.FileManager.Resolve(asmRefNode.AssemblyRef, asmRefNode.GetModule()); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { var asmNode = fileTreeView.FindNode(asm); if (asmNode != null) { fileTreeView.TreeView.SelectItems(new ITreeNodeData[] { asmNode }); } })); return; } var derivedTypeNode = e.Node as IDerivedTypeNode; if (derivedTypeNode != null) { var td = derivedTypeNode.TypeDef; Debug.Assert(td != null); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { var typeNode = fileTreeView.FindNode(td); if (typeNode != null) { fileTreeView.TreeView.SelectItems(new ITreeNodeData[] { typeNode }); } })); return; } var baseTypeNode = e.Node as IBaseTypeNode; if (baseTypeNode != null) { var tdr = baseTypeNode.TypeDefOrRef; Debug.Assert(tdr != null); var td = tdr?.ScopeType.ResolveTypeDef(); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { var typeNode = fileTreeView.FindNode(td); if (typeNode != null) { fileTreeView.TreeView.SelectItems(new ITreeNodeData[] { typeNode }); } })); return; } var tab = ActiveTabContentImpl; if (tab == null) { return; } SetFocus(tab); }
HashSet <IDnSpyFile> GetModifiedFiles(IDnSpyFile file) { var fileHash = new HashSet <IDnSpyFile>(); fileHash.Add(file); var node = FileTreeView.FindNode(file); if (node is IModuleFileNode) { if (node.DnSpyFile.AssemblyDef != null && node.DnSpyFile.AssemblyDef.ManifestModule == node.DnSpyFile.ModuleDef) { var asmNode = node.GetAssemblyNode(); Debug.Assert(asmNode != null); if (asmNode != null) { fileHash.Add(asmNode.DnSpyFile); } } } else if (node is IAssemblyFileNode) { node.TreeNode.EnsureChildrenLoaded(); var manifestModNode = node.TreeNode.DataChildren.FirstOrDefault() as IModuleFileNode; Debug.Assert(manifestModNode != null); if (manifestModNode != null) { fileHash.Add(manifestModNode.DnSpyFile); } } return(fileHash); }
private void FilterApplied() { Cursor.Current = Cursors.WaitCursor; tvFiles.Visible = false; appDB.EFileSearchRow efsr = myFTV.SelectedFile; ReloadRoot(); myFTV.FindNode(efsr); tvFiles.BeginUpdate(); //resort tree myFTV.Resort(tvFiles.Nodes); tvFiles.EndUpdate(); //tvFiles.Sort(); if (tvFiles.Nodes.Find(efsr.FileId.ToString(), true).Length > 0) { tvFiles.SelectedNode = tvFiles.Nodes.Find(efsr.FileId.ToString(), true)[0]; } Cursor.Current = Cursors.Default; tvFiles.Visible = true; tvFiles.ExpandAll(); }