Пример #1
0
        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);
         }
     }
 }
Пример #3
0
 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;
     }
 }
Пример #4
0
        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 });
            }
        }
Пример #5
0
 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);
         }
     }
 }
Пример #6
0
        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;
			}
		}