コード例 #1
0
ファイル: PackageViewModel.cs プロジェクト: grendello/nuget
        internal PackageViewModel(
            IPackage package,
            string source,
            IMruManager mruManager,
            IUIServices uiServices,
            IPackageEditorService editorService,
            ISettingsManager settingsManager)
        {
            if (package == null) {
                throw new ArgumentNullException("package");
            }
            if (mruManager == null) {
                throw new ArgumentNullException("mruManager");
            }
            if (uiServices == null) {
                throw new ArgumentNullException("uiServices");
            }
            if (editorService == null) {
                throw new ArgumentNullException("editorService");
            }
            if (settingsManager == null) {
                throw new ArgumentNullException("settingsManager");
            }

            _settingsManager = settingsManager;
            _editorService = editorService;
            _uiServices = uiServices;
            _mruManager = mruManager;
            _package = package;
            _packageMetadata = new EditablePackageMetadata(_package);
            PackageSource = source;

            _packageRoot = PathToTreeConverter.Convert(_package.GetFiles().ToList(), this);
        }
コード例 #2
0
        internal PackageViewModel(
            IPackage package,
            string source,
            IMruManager mruManager,
            IUIServices uiServices,
            IPackageEditorService editorService,
            ISettingsManager settingsManager,
            CredentialPublishProvider credentialPublishProvider,
            IList <Lazy <IPackageContentViewer, IPackageContentViewerMetadata> > contentViewerMetadata,
            IList <Lazy <IPackageRule> > packageRules)
        {
            _settingsManager           = settingsManager ?? throw new ArgumentNullException(nameof(settingsManager));
            _editorService             = editorService ?? throw new ArgumentNullException(nameof(editorService));
            _uiServices                = uiServices ?? throw new ArgumentNullException(nameof(uiServices));
            _mruManager                = mruManager ?? throw new ArgumentNullException(nameof(mruManager));
            _credentialPublishProvider = credentialPublishProvider ?? throw new ArgumentNullException(nameof(credentialPublishProvider));
            _package = package ?? throw new ArgumentNullException(nameof(package));
            _contentViewerMetadata = contentViewerMetadata;
            _packageRules          = packageRules;

            _packageMetadata = new EditablePackageMetadata(_package, _uiServices);

            PackageSource = source;

            _isSigned = _packageMetadata.IsSigned;

            _packageRoot = PathToTreeConverter.Convert(_package.GetFiles().ToList(), this);
        }
コード例 #3
0
 private void AddFolderCore(PackageFolder childFolder)
 {
     Attach(childFolder);
     childFolder.IsSelected = true;
     IsExpanded             = true;
     PackageViewModel.NotifyChanges();
 }
コード例 #4
0
        public SymbolValidator(IPackage package, string packagePath, PackageFolder?rootFolder)
        {
            if (string.IsNullOrWhiteSpace(packagePath))
            {
                throw new ArgumentException($"'{nameof(packagePath)}' cannot be null or whitespace", nameof(packagePath));
            }
            _package     = package ?? throw new ArgumentNullException(nameof(package));
            _packagePath = packagePath;

            // NuGet signs all its packages and stamps on the service index. Look for that.
            if (package is ISignaturePackage sigPackage)
            {
                if (sigPackage.RepositorySignature?.V3ServiceIndexUrl?.AbsoluteUri.Contains(".nuget.org/", StringComparison.OrdinalIgnoreCase) == true)
                {
                    IsPublicPackage = true;
                }
            }

            _rootFolder = rootFolder ?? PathToTreeConverter.Convert(package.GetFiles().ToList(), null);


            SourceLinkResult    = SymbolValidationResult.Pending;
            DeterministicResult = DeterministicResult.Pending;
            CompilerFlagsResult = HasCompilerFlagsResult.Pending;
        }
コード例 #5
0
        private void AddFileToFolder(PackageFolder folder, string file)
        {
            if (folder == null)
            {
                string guessFolderName = FileHelper.GuessFolderNameFromFile(file);
                bool   confirmed       = UIServices.Confirm(
                    String.Format(CultureInfo.CurrentCulture, Resources.ConfirmToMoveFileIntoFolder, file, guessFolderName));

                if (confirmed)
                {
                    if (RootFolder.ContainsFolder(guessFolderName))
                    {
                        folder = (PackageFolder)RootFolder[guessFolderName];
                    }
                    else
                    {
                        folder = RootFolder.AddFolder(guessFolderName);
                    }
                }
                else
                {
                    folder = RootFolder;
                }
            }

            folder.AddFile(file);
        }
コード例 #6
0
 public void AddDraggedAndDroppedFiles(PackageFolder folder, string[] fileNames)
 {
     foreach (string file in fileNames)
     {
         AddFileToFolder(folder, file);
     }
 }
コード例 #7
0
        private static void Parse(PackageFolder root, List <Tuple <IPackageFile, string[]> > parsedPaths, int level, int start, int end)
        {
            int i = start;

            while (i < end)
            {
                string s = parsedPaths[i].Item2[level];

                if (parsedPaths[i].Item2.Length == level + 1)
                {
                    // it's a file
                    root.Children.Add(new PackageFile(parsedPaths[i].Item1, s, root));
                    i++;
                }
                else
                {
                    // it's a folder
                    int j = i;
                    while (j < end && level < parsedPaths[j].Item2.Length && parsedPaths[j].Item2[level] == s)
                    {
                        j++;
                    }

                    PackageFolder folder = new PackageFolder(s, root);
                    root.Children.Add(folder);
                    Parse(folder, parsedPaths, level + 1, i, j);

                    i = j;
                }
            }
        }
コード例 #8
0
ファイル: PackageFile.cs プロジェクト: grendello/nuget
        private PackageFile(IPackageFile file, string name, PackageFolder parent, PackageViewModel viewModel)
            : base(name, parent, viewModel)
        {
            if (file == null) {
                throw new ArgumentNullException("file");
            }

            _file = file;
        }
コード例 #9
0
        private PackageFile(IPackageFile file, string name, PackageFolder parent, PackageViewModel viewModel)
            : base(name, parent, viewModel)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            _file = file;
        }
コード例 #10
0
        private void AddNewFolderExecute(object parameter)
        {
            PackageFolder folder     = (parameter ?? SelectedItem) as PackageFolder;
            string        folderName = "NewFolder";
            bool          result     = UIServices.OpenRenameDialog(folderName, out folderName);

            if (result)
            {
                folder.AddFolder(folderName);
            }
        }
コード例 #11
0
        private PackageFile(IPackageFile file, string name, PackageFolder parent, PackageViewModel viewModel)
            : base(name, parent, viewModel)
        {
            _file = file ?? throw new ArgumentNullException("file");

            if (file is DiskPackageFile physicalFile)
            {
                WatchPhysicalFile(physicalFile);
            }
            ReplaceCommand = new RelayCommand(Replace, () => !viewModel.IsSigned && !viewModel.IsInEditFileMode);
        }
コード例 #12
0
        protected PackagePart(string name, PackageFolder parent, PackageViewModel viewModel)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            _viewModel = viewModel ?? throw new ArgumentNullException("viewModel");
            _parent    = parent;

            OnNameChange(name);
            RecalculatePath();
        }
コード例 #13
0
        private void AddContentFileExecute(object parameter)
        {
            PackageFolder folder = (parameter ?? SelectedItem) as PackageFolder;

            if (folder != null)
            {
                AddExistingFileToFolder(folder);
            }
            else
            {
                AddExistingFileToFolder(RootFolder);
            }
        }
コード例 #14
0
        private void AddPhysicalFolderCore(DirectoryInfo dirInfo)
        {
            PackageFolder childPackgeFolder = AddFolder(dirInfo.Name);

            foreach (FileInfo file in dirInfo.GetFiles("*.*", SearchOption.TopDirectoryOnly))
            {
                childPackgeFolder.AddFile(file.FullName, isTempFile: false);
            }
            foreach (DirectoryInfo subFolder in dirInfo.GetDirectories("*.*", SearchOption.TopDirectoryOnly))
            {
                childPackgeFolder.AddPhysicalFolderCore(subFolder);
            }
        }
コード例 #15
0
        public PackageFolder AddFolder(string folderName)
        {
            if (!AddContentFolderCanExecute(folderName))
            {
                PackageViewModel.UIServices.Show(
                    string.Format(CultureInfo.CurrentCulture, Resources.RenameCausesNameCollison, folderName),
                    MessageLevel.Error);
                return null;
            }

            var newFolder = new PackageFolder(folderName, this);
            AddFolderCore(newFolder);
            return newFolder;
        }
コード例 #16
0
        public void AddFolder(PackageFolder childFolder, bool makeCopy = false)
        {
            if (childFolder is null)
            {
                throw new ArgumentNullException(nameof(childFolder));
            }
            if (!AddContentFolderCanExecute(childFolder.Name))
            {
                PackageViewModel.UIServices.Show(
                    string.Format(CultureInfo.CurrentCulture, Resources.RenameCausesNameCollison, childFolder.Name),
                    MessageLevel.Error);
                return;
            }

            if (IsDescendantOf(childFolder))
            {
                return;
            }

            PackageFolder newFolder;

            if (makeCopy)
            {
                newFolder = new PackageFolder(childFolder.Name, this);

                foreach (var child in childFolder.Children)
                {
                    if (child is PackageFile packageFile)
                    {
                        newFolder.AddFile(packageFile, true);
                    }
                    else if (child is PackageFolder packageFolder)
                    {
                        newFolder.AddFolder(packageFolder, true);
                    }
                }
            }
            else
            {
                if (childFolder.Parent != null)
                {
                    childFolder.Parent.Detach(childFolder);
                }

                newFolder = childFolder;
            }

            AddFolderCore(newFolder);
        }
コード例 #17
0
ファイル: PackageFolder.cs プロジェクト: lazlojuly/nuget
        public PackageFolder AddFolder(string folderName)
        {
            if (ContainsFolder(folderName) || ContainsFile(folderName))
            {
                PackageViewModel.UIServices.Show(Resources.RenameCausesNameCollison, Types.MessageLevel.Error);
                return(null);
            }
            var newFolder = new PackageFolder(folderName, this);

            Children.Add(newFolder);
            newFolder.IsSelected = true;
            this.IsExpanded      = true;
            PackageViewModel.NotifyChanges();
            return(newFolder);
        }
コード例 #18
0
        private void AddExistingFileToFolder(PackageFolder folder)
        {
            var result = UIServices.OpenMultipleFilesDialog(
                "Select Files",
                "All files (*.*)|*.*",
                out var selectedFiles);

            if (result)
            {
                foreach (var file in selectedFiles)
                {
                    folder.AddFile(file);
                }
            }
        }
コード例 #19
0
ファイル: PathToTreeConverter.cs プロジェクト: jacksonh/nuget
        public static PackageFolder Convert(List<IPackageFile> paths, PackageViewModel viewModel)
        {
            if (paths == null) {
                throw new ArgumentNullException("paths");
            }

            paths.Sort((p1, p2) => String.Compare(p1.Path, p2.Path, StringComparison.OrdinalIgnoreCase));

            PackageFolder root = new PackageFolder("", viewModel);

            List<Tuple<IPackageFile, string[]>> parsedPaths = paths.Select(p => Tuple.Create(p, p.Path.Split('\\'))).ToList();
            Parse(root, parsedPaths, 0, 0, parsedPaths.Count);

            return root;
        }
コード例 #20
0
        internal PackageViewModel(
            IPackage package,
            string source,
            IMruManager mruManager,
            IUIServices uiServices,
            IPackageEditorService editorService,
            ISettingsManager settingsManager,
            IList <Lazy <IPackageContentViewer, IPackageContentViewerMetadata> > contentViewerMetadata,
            IList <Lazy <IPackageRule> > packageRules)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }
            if (mruManager == null)
            {
                throw new ArgumentNullException("mruManager");
            }
            if (uiServices == null)
            {
                throw new ArgumentNullException("uiServices");
            }
            if (editorService == null)
            {
                throw new ArgumentNullException("editorService");
            }
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            _settingsManager       = settingsManager;
            _editorService         = editorService;
            _uiServices            = uiServices;
            _mruManager            = mruManager;
            _package               = package;
            _contentViewerMetadata = contentViewerMetadata;
            _packageRules          = packageRules;

            _packageMetadata = new EditablePackageMetadata(_package);

            PackageSource = source;

            _packageRoot = PathToTreeConverter.Convert(_package.GetFiles().ToList(), this);

            // HACK: this is after the package.GetFiles() since that reads the signature
            _packageMetadata.PublisherCertificate = _package.PublisherCertificate;
        }
コード例 #21
0
        private void AddExistingFileToFolder(PackageFolder folder)
        {
            string[] selectedFiles;
            bool     result = UIServices.OpenMultipleFilesDialog(
                "Select Files",
                "All files (*.*)|*.*",
                out selectedFiles);

            if (result)
            {
                foreach (string file in selectedFiles)
                {
                    folder.AddFile(file, isTempFile: false);
                }
            }
        }
コード例 #22
0
        public static PackageFolder Convert(List <IPackageFile> paths, PackageViewModel viewModel)
        {
            if (paths == null)
            {
                throw new ArgumentNullException("paths");
            }

            paths.Sort((p1, p2) => String.Compare(p1.Path, p2.Path, StringComparison.OrdinalIgnoreCase));

            PackageFolder root = new PackageFolder("", viewModel);

            List <Tuple <IPackageFile, string[]> > parsedPaths = paths.Select(p => Tuple.Create(p, p.Path.Split('\\'))).ToList();

            Parse(root, parsedPaths, 0, 0, parsedPaths.Count);

            return(root);
        }
コード例 #23
0
        internal PackageViewModel(
            IPackage package,
            string source,
            IMruManager mruManager,
            IUIServices uiServices,
            IPackageEditorService editorService,
            ISettingsManager settingsManager,
            IList <Lazy <IPackageContentViewer, IPackageContentViewerMetadata> > contentViewerMetadata,
            IList <Lazy <IPackageRule> > packageRules)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }
            if (mruManager == null)
            {
                throw new ArgumentNullException("mruManager");
            }
            if (uiServices == null)
            {
                throw new ArgumentNullException("uiServices");
            }
            if (editorService == null)
            {
                throw new ArgumentNullException("editorService");
            }
            if (settingsManager == null)
            {
                throw new ArgumentNullException("settingsManager");
            }

            _settingsManager       = settingsManager;
            _editorService         = editorService;
            _uiServices            = uiServices;
            _mruManager            = mruManager;
            _package               = package;
            _contentViewerMetadata = contentViewerMetadata;
            _packageRules          = packageRules;

            _packageMetadata = new EditablePackageMetadata(_package, _uiServices);

            PackageSource = source;
            _isSigned     = package.IsSigned;

            _packageRoot = PathToTreeConverter.Convert(_package.GetFiles().ToList(), this);
        }
コード例 #24
0
        protected PackagePart(string name, PackageFolder parent, PackageViewModel viewModel)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }

            _viewModel = viewModel;
            _parent    = parent;
            _name      = name;
            RecalculatePath();
        }
コード例 #25
0
        private PackageFile(IPackageFile file, string name, PackageFolder parent, PackageViewModel viewModel)
            : base(name, parent, viewModel)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            _file = file;

            var physicalFile = file as PhysicalPackageFile;
            if (physicalFile != null)
            {
                WatchPhysicalFile(physicalFile);
            }
            ReplaceCommand = new RelayCommand(Replace, () => !viewModel.IsInEditFileMode);
        }
コード例 #26
0
        private PackageFile(IPackageFile file, string name, PackageFolder parent, PackageViewModel viewModel)
            : base(name, parent, viewModel)
        {
            if (file == null)
            {
                throw new ArgumentNullException("file");
            }

            _file = file;

            var physicalFile = file as PhysicalPackageFile;

            if (physicalFile != null)
            {
                WatchPhysicalFile(physicalFile);
            }
            ReplaceCommand = new RelayCommand(Replace, () => !viewModel.IsReadOnly && !viewModel.IsInEditFileMode);
        }
コード例 #27
0
        private void AddNewFileToFolder(PackageFolder folder)
        {
            var result = UIServices.OpenRenameDialog(
                "NewFile.txt",
                "Provide name for the new file.",
                out var newName);

            if (result)
            {
                var sourcePath = FileHelper.CreateTempFile(newName);
                var file       = folder.AddFile(sourcePath);
                // file can be null if it collides with other files in the same directory
                if (file != null)
                {
                    EditFileCommandExecute(file);
                }
            }
        }
コード例 #28
0
        private static void Parse(PackageFolder root, List <Tuple <IPackageFile, string[]> > parsedPaths, int level,
                                  int start, int end)
        {
            var i = start;

            while (i < end)
            {
                var s = parsedPaths[i].Item2[level];

                if (parsedPaths[i].Item2.Length == level + 1)
                {
                    // it's a file
                    // Starting from nuget 2.0, they use a dummy file with the name "_._" to represent
                    // an empty folder. Therefore, we just ignore it.
                    if (!s.Equals(NuGetPe.Constants.PackageEmptyFileName, StringComparison.OrdinalIgnoreCase))
                    {
                        root.Children.Add(new PackageFile(parsedPaths[i].Item1, s, root));
                    }
                    i++;
                }
                else
                {
                    // it's a folder
                    var j = i;
                    while (
                        j < end &&
                        level < parsedPaths[j].Item2.Length &&
                        parsedPaths[j].Item2[level].Equals(s, StringComparison.OrdinalIgnoreCase)
                        )
                    {
                        j++;
                    }

                    var folder = new PackageFolder(s, root);
                    root.Children.Add(folder);
                    Parse(folder, parsedPaths, level + 1, i, j);

                    i = j;
                }
            }
        }
コード例 #29
0
        private static void Parse(PackageFolder root, List<Tuple<IPackageFile, string[]>> parsedPaths, int level,
                                  int start, int end)
        {
            int i = start;
            while (i < end)
            {
                string s = parsedPaths[i].Item2[level];

                if (parsedPaths[i].Item2.Length == level + 1)
                {
                    // it's a file
                    // Starting from nuget 2.0, they use a dummy file with the name "_._" to represent
                    // an empty folder. Therefore, we just ignore it. 
                    if (!s.Equals(NuGet.Constants.PackageEmptyFileName, StringComparison.OrdinalIgnoreCase))
                    {
                        root.Children.Add(new PackageFile(parsedPaths[i].Item1, s, root));
                    }
                    i++;
                }
                else
                {
                    // it's a folder
                    int j = i;
                    while (
                        j < end &&
                        level < parsedPaths[j].Item2.Length &&
                        parsedPaths[j].Item2[level].Equals(s, StringComparison.OrdinalIgnoreCase)
                        )
                    {
                        j++;
                    }

                    var folder = new PackageFolder(s, root);
                    root.Children.Add(folder);
                    Parse(folder, parsedPaths, level + 1, i, j);

                    i = j;
                }
            }
        }
コード例 #30
0
        public void AddFolder(PackageFolder childFolder)
        {
            if (!AddContentFolderCanExecute(childFolder.Name))
            {
                PackageViewModel.UIServices.Show(
                    String.Format(CultureInfo.CurrentCulture, Resources.RenameCausesNameCollison, childFolder.Name),
                    MessageLevel.Error);
                return;
            }

            if (this.IsDescendantOf(childFolder))
            {
                return;
            }

            if (childFolder.Parent != null)
            {
                childFolder.Parent.Detach(childFolder);
            }

            AddFolderCore(childFolder);
        }
コード例 #31
0
ファイル: PathToTreeConverter.cs プロジェクト: jacksonh/nuget
        private static void Parse(PackageFolder root, List<Tuple<IPackageFile, string[]>> parsedPaths, int level, int start, int end)
        {
            int i = start;
            while (i < end) {
                string s = parsedPaths[i].Item2[level];

                if (parsedPaths[i].Item2.Length == level + 1) {
                    // it's a file
                    root.Children.Add(new PackageFile(parsedPaths[i].Item1, s, root));
                    i++;
                }
                else {
                    // it's a folder
                    int j = i;
                    while (j < end && level < parsedPaths[j].Item2.Length && parsedPaths[j].Item2[level] == s) j++;

                    PackageFolder folder = new PackageFolder(s, root);
                    root.Children.Add(folder);
                    Parse(folder, parsedPaths, level + 1, i, j);

                    i = j;
                }
            }
        }
コード例 #32
0
 public PackageFolder(string name, PackageFolder parent)
     : base(name, parent, parent.PackageViewModel)
 {
     Children = new SortedCollection <PackagePart>();
 }
コード例 #33
0
ファイル: PackageViewModel.cs プロジェクト: grendello/nuget
 public void AddDraggedAndDroppedFiles(PackageFolder folder, string[] fileNames)
 {
     foreach (string file in fileNames) {
         AddFileToFolder(folder, file);
     }
 }
コード例 #34
0
ファイル: PackageFolder.cs プロジェクト: jacksonh/nuget
 public PackageFolder AddFolder(string folderName)
 {
     if (ContainsFolder(folderName) || ContainsFile(folderName)) {
         PackageViewModel.UIServices.Show(Resources.RenameCausesNameCollison, Types.MessageLevel.Error);
         return null;
     }
     var newFolder = new PackageFolder(folderName, this);
     Children.Add(newFolder);
     newFolder.IsSelected = true;
     this.IsExpanded = true;
     PackageViewModel.NotifyChanges();
     return newFolder;
 }
コード例 #35
0
ファイル: PackageViewModel.cs プロジェクト: grendello/nuget
        private void AddExistingFileToFolder(PackageFolder folder)
        {
            string[] selectedFiles;
            bool result = UIServices.OpenMultipleFilesDialog(
                "Select Files",
                "All files (*.*)|*.*",
                out selectedFiles);

            if (result) {
                foreach (string file in selectedFiles) {
                    folder.AddFile(file);
                }
            }
        }
コード例 #36
0
 public void AddDraggedAndDroppedFileDescriptors(PackageFolder folder, IEnumerable <(string FilePath, Stream Stream)> fileDescriptors)
コード例 #37
0
 public PackageFile(IPackageFile file, string name, PackageFolder parent)
     : this(file, name, parent, parent.PackageViewModel)
 {
 }
コード例 #38
0
 private void AddFolderCore(PackageFolder childFolder)
 {
     Attach(childFolder);
     childFolder.IsSelected = true;
     IsExpanded = true;
     PackageViewModel.NotifyChanges();
 }
コード例 #39
0
 public PackageFolder(string name, PackageFolder parent)
     : base(name, parent, parent.PackageViewModel)
 {
     Children = new SortedCollection<PackagePart>();
 }
コード例 #40
0
        public void AddFolder(PackageFolder childFolder)
        {
            if (!AddContentFolderCanExecute(childFolder.Name))
            {
                PackageViewModel.UIServices.Show(
                    String.Format(CultureInfo.CurrentCulture, Resources.RenameCausesNameCollison, childFolder.Name),
                    MessageLevel.Error);
                return;
            }

            if (this.IsDescendantOf(childFolder))
            {
                return;
            }

            if (childFolder.Parent != null)
            {
                childFolder.Parent.Detach(childFolder);
            }

            AddFolderCore(childFolder);
        }
コード例 #41
0
        public PackageFolder AddFolder(string folderName)
        {
            if (!AddContentFolderCanExecute(folderName))
            {
                PackageViewModel.UIServices.Show(
                    String.Format(CultureInfo.CurrentCulture, Resources.RenameCausesNameCollison, folderName),
                    MessageLevel.Error);
                return null;
            }

            var newFolder = new PackageFolder(folderName, this);
            AddFolderCore(newFolder);
            return newFolder;
        }
コード例 #42
0
ファイル: PackageViewModel.cs プロジェクト: grendello/nuget
        private void AddFileToFolder(PackageFolder folder, string file)
        {
            if (folder == null) {
                string guessFolderName = FileHelper.GuessFolderNameFromFile(file);
                bool confirmed = UIServices.Confirm(
                    String.Format(CultureInfo.CurrentCulture, Resources.ConfirmToMoveFileIntoFolder, file, guessFolderName));

                if (confirmed) {
                    if (RootFolder.ContainsFolder(guessFolderName)) {
                        folder = (PackageFolder)RootFolder[guessFolderName];
                    }
                    else {
                        folder = RootFolder.AddFolder(guessFolderName);
                    }
                }
                else {
                    folder = RootFolder;
                }
            }

            folder.AddFile(file);
        }
コード例 #43
0
        public void AddDraggedAndDroppedFiles(PackageFolder folder, string[] fileNames)
        {
            if (folder == null)
            {
                bool?rememberedAnswer = null;

                for (var i = 0; i < fileNames.Length; i++)
                {
                    var file = fileNames[i];
                    if (File.Exists(file))
                    {
                        bool movingFile;

                        PackageFolder targetFolder;
                        var           guessFolderName = FileHelper.GuessFolderNameFromFile(file);

                        if (rememberedAnswer == null)
                        {
                            // ask user if he wants to move file
                            var answer = UIServices.ConfirmMoveFile(
                                Path.GetFileName(file),
                                guessFolderName, fileNames.Length - i - 1);

                            if (answer.Item1 == null)
                            {
                                // user presses Cancel
                                break;
                            }

                            movingFile = (bool)answer.Item1;
                            if (answer.Item2)
                            {
                                rememberedAnswer = answer.Item1;
                            }
                        }
                        else
                        {
                            movingFile = (bool)rememberedAnswer;
                        }

                        if (movingFile)
                        {
                            if (RootFolder.ContainsFolder(guessFolderName))
                            {
                                targetFolder = (PackageFolder)RootFolder[guessFolderName];
                            }
                            else
                            {
                                targetFolder = RootFolder.AddFolder(guessFolderName);
                            }
                        }
                        else
                        {
                            targetFolder = RootFolder;
                        }

                        targetFolder.AddFile(file);
                    }
                    else if (Directory.Exists(file))
                    {
                        RootFolder.AddPhysicalFolder(file);
                    }
                }
            }
            else
            {
                foreach (var file in fileNames)
                {
                    if (File.Exists(file))
                    {
                        folder.AddFile(file);
                    }
                    else if (Directory.Exists(file))
                    {
                        folder.AddPhysicalFolder(file);
                    }
                }
            }
        }
コード例 #44
0
 private void AddNewFileToFolder(PackageFolder folder)
 {
     string newName;
     bool result = UIServices.OpenRenameDialog(
         "NewFile.txt",
         "Provide name for the new file.",
         out newName);
     if (result)
     {
         string sourcePath = FileHelper.CreateTempFile(newName);
         PackageFile file = folder.AddFile(sourcePath, isTempFile: true);
         // file can be null if it collides with other files in the same directory
         if (file != null)
         {
             EditFileCommandExecute(file);
         }
     }
 }
コード例 #45
0
        public void AddDraggedAndDroppedFiles(PackageFolder folder, string[] fileNames)
        {
            if (folder == null)
            {
                bool? rememberedAnswer = null;

                for (int i = 0; i < fileNames.Length; i++)
                {
                    string file = fileNames[i];
                    if (File.Exists(file))
                    {
                        bool movingFile;

                        PackageFolder targetFolder;
                        string guessFolderName = FileHelper.GuessFolderNameFromFile(file);

                        if (rememberedAnswer == null)
                        {
                            // ask user if he wants to move file
                            Tuple<bool?, bool> answer = UIServices.ConfirmMoveFile(
                                Path.GetFileName(file),
                                guessFolderName, fileNames.Length - i - 1);

                            if (answer.Item1 == null)
                            {
                                // user presses Cancel
                                break;
                            }

                            movingFile = (bool) answer.Item1;
                            if (answer.Item2)
                            {
                                rememberedAnswer = answer.Item1;
                            }
                        }
                        else
                        {
                            movingFile = (bool) rememberedAnswer;
                        }

                        if (movingFile)
                        {
                            if (RootFolder.ContainsFolder(guessFolderName))
                            {
                                targetFolder = (PackageFolder) RootFolder[guessFolderName];
                            }
                            else
                            {
                                targetFolder = RootFolder.AddFolder(guessFolderName);
                            }
                        }
                        else
                        {
                            targetFolder = RootFolder;
                        }

                        targetFolder.AddFile(file, isTempFile: false);
                    }
                    else if (Directory.Exists(file))
                    {
                        RootFolder.AddPhysicalFolder(file);
                    }
                }
            }
            else
            {
                foreach (string file in fileNames)
                {
                    if (File.Exists(file))
                    {
                        folder.AddFile(file, isTempFile: false);
                    }
                    else if (Directory.Exists(file))
                    {
                        folder.AddPhysicalFolder(file);
                    }
                }
            }
        }
コード例 #46
0
 public PackageFile(IPackageFile file, string name, PackageFolder parent)
     : this(file, name, parent, parent.PackageViewModel)
 {
 }