From ababc041ec25dfae11eacb4c3e368664652372c2 Mon Sep 17 00:00:00 2001 From: Gregory Diaz Date: Thu, 3 Sep 2015 09:26:54 -0700 Subject: [PATCH] Added code to ensure that the Queue has unique copies of items --- Queue/QueueData.cs | 22 +++++++++ Queue/QueueDataWidget.cs | 1 + Queue/QueueRowItem.cs | 1 + Utilities/ManifestFileHandler.cs | 83 ++++++++++++++++++++++++++++++++ 4 files changed, 107 insertions(+) diff --git a/Queue/QueueData.cs b/Queue/QueueData.cs index 2ed6f559e..9032fbb6e 100644 --- a/Queue/QueueData.cs +++ b/Queue/QueueData.cs @@ -349,11 +349,13 @@ namespace MatterHackers.MatterControl.PrintQueue else { DoAddItem(item, indexToInsert); + copyQueueItemToQueueItemFolder(item.FileLocation); } } else { DoAddItem(item, indexToInsert); + copyQueueItemToQueueItemFolder(item.FileLocation); } } @@ -365,6 +367,26 @@ namespace MatterHackers.MatterControl.PrintQueue } } + private void copyQueueItemToQueueItemFolder(string fileNameToLoad) + { + string pathToQueueItemsFolder = Path.Combine(MatterHackers.MatterControl.DataStorage.ApplicationDataStorage.ApplicationUserDataPath, "data", "QueueItems"); + string partName = Path.GetFileName(fileNameToLoad); + string locationToSaveTo = Path.Combine(pathToQueueItemsFolder, partName); + + if (!Directory.Exists(pathToQueueItemsFolder)) + { + + Directory.CreateDirectory(pathToQueueItemsFolder); + + } + + if (!File.Exists(locationToSaveTo)) + { + File.Copy(fileNameToLoad, locationToSaveTo); + } + + } + private void DoAddItem(PrintItemWrapper item, int indexToInsert) { if (indexToInsert == -1) diff --git a/Queue/QueueDataWidget.cs b/Queue/QueueDataWidget.cs index 8eeeb77e2..cc25fc1e8 100644 --- a/Queue/QueueDataWidget.cs +++ b/Queue/QueueDataWidget.cs @@ -248,6 +248,7 @@ namespace MatterHackers.MatterControl.PrintQueue itemOperationButtons.AddChild(exportItemButton); Button copyItemButton = editButtonFactory.Generate("Copy".Localize()); + copyItemButton.Name = "Queue Copy Button"; copyItemButton.Margin = new BorderDouble(3, 0); copyItemButton.Click += new EventHandler(copyButton_Click); editButtonsEnableData.Add(new ButtonEnableData(false, true)); diff --git a/Queue/QueueRowItem.cs b/Queue/QueueRowItem.cs index 75e6e33b0..0b289b841 100644 --- a/Queue/QueueRowItem.cs +++ b/Queue/QueueRowItem.cs @@ -92,6 +92,7 @@ namespace MatterHackers.MatterControl.PrintQueue { this.queueDataView = queueDataView; this.PrintItemWrapper = printItemWrapper; + this.Name = "Queue Row Item"; ConstructPrintQueueItem(); } diff --git a/Utilities/ManifestFileHandler.cs b/Utilities/ManifestFileHandler.cs index be5ba78f7..47b65c8a2 100644 --- a/Utilities/ManifestFileHandler.cs +++ b/Utilities/ManifestFileHandler.cs @@ -108,6 +108,11 @@ namespace MatterHackers.MatterControl { savedFileName = defaultPathAndFileName; } + + //Modify PrintItem list for export + project.ProjectFiles = NewPrintItemListToExport(project.ProjectFiles); + + string jsonString = JsonConvert.SerializeObject(this.project, Newtonsoft.Json.Formatting.Indented); if (!Directory.Exists(applicationDataPath + "/data/")) { @@ -137,7 +142,85 @@ namespace MatterHackers.MatterControl return new List(); } + newProject.ProjectFiles = NewPrintItemListForImport(newProject.ProjectFiles); + return newProject.ProjectFiles; } + + public List NewPrintItemListToExport(List printItemList) + { + + List newPrintItemList = new List(); + + foreach (var printItem in printItemList) + { + + string pathToRenameForExport = printItem.FileLocation; + string partName = Path.GetFileName(pathToRenameForExport); + string exportedFilePath = "[QueueItems]\\" + partName; + + PrintItem newPrintItem = new PrintItem(); + newPrintItem.DateAdded = printItem.DateAdded; + newPrintItem.Name = printItem.Name; + newPrintItem.PrintCount = printItem.PrintCount; + newPrintItem.PrintItemCollectionID = printItem.PrintItemCollectionID; + newPrintItem.ReadOnly = printItem.ReadOnly; + newPrintItem.Protected = printItem.Protected; + + if(pathToRenameForExport.Contains("C:\\")) + { + + newPrintItem.FileLocation = exportedFilePath; + + } + else + { + + newPrintItem.FileLocation = printItem.FileLocation; + + } + newPrintItemList.Add(newPrintItem); + } + + return newPrintItemList; + + } + + public List NewPrintItemListForImport(List printItemList) + { + + List newPrintItemList = new List(); + + foreach (var printItem in printItemList) + { + + string userDataPath = MatterHackers.MatterControl.DataStorage.ApplicationDataStorage.ApplicationUserDataPath; + string partName = Path.GetFileName(printItem.FileLocation); + string pathToRenameForImport = Path.Combine(userDataPath, "data", "QueueItems"); + + PrintItem newPrintItem = new PrintItem(); + newPrintItem.DateAdded = printItem.DateAdded; + newPrintItem.Name = printItem.Name; + newPrintItem.PrintCount = printItem.PrintCount; + newPrintItem.PrintItemCollectionID = printItem.PrintItemCollectionID; + newPrintItem.ReadOnly = printItem.ReadOnly; + newPrintItem.Protected = printItem.Protected; + + if(printItem.FileLocation.Contains("[QueueItems]")) + { + newPrintItem.FileLocation = Path.Combine(pathToRenameForImport, partName); + + } + else + { + newPrintItem.FileLocation = printItem.FileLocation; + } + + newPrintItemList.Add(newPrintItem); + } + + return newPrintItemList; + + } } } \ No newline at end of file