void OnDropFiles(int index, string[] filenames) { if (!context.CanDragAndDrop) { return; } var origFilenames = filenames; var existingFiles = new HashSet <string>(FileManager.GetFiles().Select(a => a.Filename ?? string.Empty), StringComparer.OrdinalIgnoreCase); filenames = filenames.Where(a => File.Exists(a) && !existingFiles.Contains(a)).Distinct(StringComparer.OrdinalIgnoreCase).ToArray(); ITreeNodeData newSelectedNode = null; for (int i = 0, j = 0; i < filenames.Length; i++) { var file = FileManager.TryCreateOnly(DnSpyFileInfo.CreateFile(filenames[i])); if (file == null) { continue; } var node = CreateNode(null, file); FileManager.ForceAdd(file, false, new AddFileInfo(node, index + j++)); if (newSelectedNode == null) { newSelectedNode = node; } } if (newSelectedNode == null) { var filename = origFilenames.FirstOrDefault(a => File.Exists(a)); if (filename != null) { var key = new FilenameKey(filename); var file = FileManager.GetFiles().FirstOrDefault(a => key.Equals(a.Key)); newSelectedNode = FindNode(file); } } if (newSelectedNode != null) { TreeView.SelectItems(new[] { newSelectedNode }); } }
IEnumerable <ModuleDef> GetLoadedFiles(IAppCommandLineArgs args) { foreach (var filename in args.Filenames) { var key = new FilenameKey(filename); var file = fileTabManager.FileTreeView.FileManager.GetFiles().FirstOrDefault(a => key.Equals(a.Key)); if (file == null || file.ModuleDef == null) { continue; } if (file.AssemblyDef != null) { foreach (var mod in file.AssemblyDef.Modules) { yield return(mod); } } else { yield return(file.ModuleDef); } } }
IEnumerable<ModuleDef> GetLoadedFiles(IAppCommandLineArgs args) { foreach (var filename in args.Filenames) { var key = new FilenameKey(filename); var file = fileTabManager.FileTreeView.FileManager.GetFiles().FirstOrDefault(a => key.Equals(a.Key)); if (file == null || file.ModuleDef == null) continue; if (file.AssemblyDef != null) { foreach (var mod in file.AssemblyDef.Modules) yield return mod; } else yield return file.ModuleDef; } }
void OnDropFiles(int index, string[] filenames) { if (!context.CanDragAndDrop) { return; } var origFilenames = filenames; var existingFiles = new HashSet <string>(DocumentService.GetDocuments().Select(a => a.Filename ?? string.Empty), StringComparer.OrdinalIgnoreCase); filenames = filenames.Where(a => File.Exists(a) && !existingFiles.Contains(a)).Distinct(StringComparer.OrdinalIgnoreCase).OrderBy(a => Path.GetFileNameWithoutExtension(a), StringComparer.CurrentCultureIgnoreCase).ToArray(); ITreeNodeData newSelectedNode = null; for (int i = 0, j = 0; i < filenames.Length; i++) { var document = DocumentService.TryCreateOnly(DsDocumentInfo.CreateDocument(filenames[i])); if (document == null) { continue; } var node = CreateNode(null, document); DocumentService.ForceAdd(document, false, new AddDocumentInfo(node, index + j++)); if (newSelectedNode == null) { newSelectedNode = node; } } if (newSelectedNode == null) { var filename = origFilenames.FirstOrDefault(a => File.Exists(a)); if (filename != null) { var key = new FilenameKey(filename); var document = DocumentService.GetDocuments().FirstOrDefault(a => key.Equals(a.Key)); newSelectedNode = FindNode(document); } } if (newSelectedNode != null) { TreeView.SelectItems(new[] { newSelectedNode }); } }
IEnumerable <ModuleDef> GetLoadedFiles(IAppCommandLineArgs args) { foreach (var filename in args.Filenames) { var key = new FilenameKey(filename); var document = documentTabService.DocumentTreeView.DocumentService.GetDocuments().FirstOrDefault(a => key.Equals(a.Key)); if (document?.ModuleDef == null) { continue; } if (document.AssemblyDef != null) { foreach (var mod in document.AssemblyDef.Modules) { yield return(mod); } } else { yield return(document.ModuleDef); } } }
void OnDropFiles(int index, string[] filenames) { if (!context.CanDragAndDrop) { return; } var origFilenames = filenames; var existingFiles = new HashSet <string>(DocumentService.GetDocuments().Select(a => a.Filename ?? string.Empty), StringComparer.OrdinalIgnoreCase); filenames = filenames.Where(a => File.Exists(a) && !existingFiles.Contains(a)).Distinct(StringComparer.OrdinalIgnoreCase).OrderBy(a => Path.GetFileNameWithoutExtension(a), StringComparer.CurrentCultureIgnoreCase).ToArray(); TreeNodeData newSelectedNode = null; for (int i = 0, j = 0; i < filenames.Length; i++) { var document = DocumentService.TryCreateOnly(DsDocumentInfo.CreateDocument(filenames[i])); if (document == null) { continue; } if (filenames.Length > 1) { switch (documentTreeViewSettings.FilterDraggedItems) { case DocumentFilterType.All: break; case DocumentFilterType.DotNetOnly: if (!(document is IDsDotNetDocument)) { continue; } break; case DocumentFilterType.AllSupported: if (document is DsUnknownDocument) { continue; } break; default: Debug.Fail("Shouldn't be here"); break; } } var node = CreateNode(null, document); DocumentService.ForceAdd(document, false, new AddDocumentInfo(node, index + j++)); if (newSelectedNode == null) { newSelectedNode = node; } existingFiles.Add(document.Filename); } if (filenames.Any() && !filenames.Any(f => existingFiles.Contains(f))) { MsgBox.Instance.Show(dnSpy_Resources.AssemblyExplorer_AllFilesFilteredOut); } if (newSelectedNode == null) { var filename = origFilenames.FirstOrDefault(a => File.Exists(a)); if (filename != null) { var key = new FilenameKey(filename); var document = DocumentService.GetDocuments().FirstOrDefault(a => key.Equals(a.Key)); newSelectedNode = FindNode(document); } } if (newSelectedNode != null) { TreeView.SelectItems(new[] { newSelectedNode }); } }
IEnumerable<ModuleDef> GetLoadedFiles(IAppCommandLineArgs args) { foreach (var filename in args.Filenames) { var key = new FilenameKey(filename); var document = documentTabService.DocumentTreeView.DocumentService.GetDocuments().FirstOrDefault(a => key.Equals(a.Key)); if (document?.ModuleDef == null) continue; if (document.AssemblyDef != null) { foreach (var mod in document.AssemblyDef.Modules) yield return mod; } else yield return document.ModuleDef; } }