/// <summary> /// Copy the items given in the list (tables and graphs) to a folder, which is selected by the user via a dialog box. /// </summary> /// <param name="list">List of items to delete.</param> /// <param name="areDocumentsFromOneFolder">If true, the list contains objects origination from only one project folder (or from subfolders of that folder). In this case the paramenter <c>originalSourceFolder</c> contains the original project folder from which the items should be copied.</param> /// <param name="originalSourceFolder">Original folder from which the items originate (only valid if <c>areDocumentsFromOneFolder</c> is true.</param> public static void CopyDocuments(IList <object> list, bool areDocumentsFromOneFolder, string originalSourceFolder) { var names = Current.Project.Folders.GetSubfoldersAsDisplayFolderNameStringListSorted(ProjectFolder.RootFolderName, true); names.Insert(0, rootFolderDisplayName); var choices = new TextChoice(names.ToArray(), 0, true) { Description = "Choose or enter the folder to copy the items into:" }; if (!Current.Gui.ShowDialog(ref choices, "Folder choice", false)) { return; } string newFolderName = rootFolderDisplayName == choices.Text ? ProjectFolder.RootFolderName : ProjectFolder.ConvertDisplayFolderNameToFolderName(choices.Text); DocNodePathReplacementOptions relocateOptions = null; if (areDocumentsFromOneFolder) { var relocateData = Current.Gui.YesNoCancelMessageBox("Do you want to relocate the references in the copied plots so that they point to the destination folder?", "Question", null); if (null == relocateData) { return; } if (true == relocateData) { relocateOptions = new DocNodePathReplacementOptions(); relocateOptions.AddPathReplacementsForAllProjectItemTypes(originalSourceFolder, newFolderName); } } Current.Project.Folders.CopyItemsToFolder(list, newFolderName, null != relocateOptions ? relocateOptions.Visit : (DocNodeProxyReporter)null, false); }
/// <summary> /// Move the items given in the list (tables and graphs) to a new location. The new location is ask for in a dialog. /// </summary> /// <param name="list">List of items to move.</param> public static void MoveDocuments(IList <object> list) { var names = Current.Project.Folders.GetSubfoldersAsDisplayFolderNameStringListSorted(ProjectFolder.RootFolderName, true); names.Insert(0, rootFolderDisplayName); var choices = new TextChoice(names.ToArray(), 0, true) { Description = "Choose or enter the folder to move the items into:" }; if (!Current.Gui.ShowDialog(ref choices, "Folder choice", false)) { return; } string newFolderName = rootFolderDisplayName == choices.Text ? ProjectFolder.RootFolderName : ProjectFolder.ConvertDisplayFolderNameToFolderName(choices.Text); Current.Project.Folders.MoveItemsToFolder(list, newFolderName); }