diff --git a/AboutPage/AboutWidget.cs b/AboutPage/AboutWidget.cs index e62fb1ba2..aab228995 100644 --- a/AboutPage/AboutWidget.cs +++ b/AboutPage/AboutWidget.cs @@ -72,10 +72,10 @@ namespace MatterHackers.MatterControl #if false // test { SystemWindow releaseNotes = new SystemWindow(640, 480); - string releaseNotesFile = Path.Combine("OEMSettings", "ReleaseNotesMini.html"); + string releaseNotesFile = Path.Combine("OEMSettings", "ReleaseNotes.html"); string releaseNotesContent = StaticData.Instance.ReadAllText(releaseNotesFile); HtmlWidget content = new HtmlWidget(releaseNotesContent, RGBA_Bytes.Black); - content.AddChild(new GuiWidget(HAnchor.None, VAnchor.ParentBottomTop)); + content.AddChild(new GuiWidget(HAnchor.AbsolutePosition, VAnchor.ParentBottomTop)); content.VAnchor |= VAnchor.ParentTop; content.BackgroundColor = RGBA_Bytes.White; releaseNotes.AddChild(content); diff --git a/AboutPage/HTMLParser/HtmlWidget.cs b/AboutPage/HTMLParser/HtmlWidget.cs index 002ceb3cf..ab35e9fdc 100644 --- a/AboutPage/HTMLParser/HtmlWidget.cs +++ b/AboutPage/HTMLParser/HtmlWidget.cs @@ -66,8 +66,8 @@ namespace MatterHackers.MatterControl htmlParser.ParseHtml(htmlContent, AddContent, CloseContent); - VAnchor |= VAnchor.ParentBottomTop; - HAnchor |= HAnchor.ParentLeftRight; + VAnchor = VAnchor.Max_FitToChildren_ParentHeight; + HAnchor = HAnchor.Max_FitToChildren_ParentWidth; } public class WrappingTextWidget : GuiWidget @@ -274,7 +274,7 @@ namespace MatterHackers.MatterControl break; default: - throw new NotImplementedException("Don't know what to do with {0}".FormatWith(elementState.TypeName)); + throw new NotImplementedException("Don't know what to do with '{0}'".FormatWith(elementState.TypeName)); } } diff --git a/ControlElements/MHTextEditWidget.cs b/ControlElements/MHTextEditWidget.cs index 75cc46257..5aa3bc11b 100644 --- a/ControlElements/MHTextEditWidget.cs +++ b/ControlElements/MHTextEditWidget.cs @@ -43,7 +43,7 @@ namespace MatterHackers.MatterControl { if (noContentFieldDescription != null) { - if (Text == "" && !ContainsFocus) + if (Text == "" || !ContainsFocus) { noContentFieldDescription.Visible = true; } @@ -110,6 +110,11 @@ namespace MatterHackers.MatterControl } } + public override bool Focus() + { + return actuallTextEditWidget.Focus(); + } + public bool SelectAllOnFocus { get { return actuallTextEditWidget.InternalTextEditWidget.SelectAllOnFocus; } diff --git a/Library/CreateFolderWindow.cs b/Library/CreateFolderWindow.cs index 4f0545705..0658173bc 100644 --- a/Library/CreateFolderWindow.cs +++ b/Library/CreateFolderWindow.cs @@ -12,7 +12,7 @@ namespace MatterHackers.MatterControl { private Action functionToCallToCreateNamedFolder; private TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory(); - private MHTextEditWidget textToAddWidget; + private MHTextEditWidget folderNameWidget; public CreateFolderWindow(Action functionToCallToCreateNamedFolder) : base(480, 180) @@ -62,12 +62,12 @@ namespace MatterHackers.MatterControl textBoxHeader.HAnchor = HAnchor.ParentLeft; //Adds text box and check box to the above container - textToAddWidget = new MHTextEditWidget("", pixelWidth: 300, messageWhenEmptyAndNotSelected: "Enter a Folder Name Here".Localize()); - textToAddWidget.HAnchor = HAnchor.ParentLeftRight; - textToAddWidget.Margin = new BorderDouble(5); + folderNameWidget = new MHTextEditWidget("", pixelWidth: 300, messageWhenEmptyAndNotSelected: "Enter a Folder Name Here".Localize()); + folderNameWidget.HAnchor = HAnchor.ParentLeftRight; + folderNameWidget.Margin = new BorderDouble(5); middleRowContainer.AddChild(textBoxHeader); - middleRowContainer.AddChild(textToAddWidget); + middleRowContainer.AddChild(folderNameWidget); middleRowContainer.AddChild(new HorizontalSpacer()); topToBottom.AddChild(middleRowContainer); @@ -85,7 +85,7 @@ namespace MatterHackers.MatterControl buttonRow.AddChild(createFolderButton); createFolderButton.Click += new EventHandler(createFolderButton_Click); - textToAddWidget.ActualTextEditWidget.EnterPressed += new KeyEventHandler(ActualTextEditWidget_EnterPressed); + folderNameWidget.ActualTextEditWidget.EnterPressed += new KeyEventHandler(ActualTextEditWidget_EnterPressed); //Adds Create and Close Button to button container buttonRow.AddChild(new HorizontalSpacer()); @@ -104,6 +104,18 @@ namespace MatterHackers.MatterControl ShowAsSystemWindow(); } + bool firstDraw = true; + public override void OnDraw(Graphics2D graphics2D) + { + if (firstDraw) + { + folderNameWidget.Focus(); + + firstDraw = false; + } + base.OnDraw(graphics2D); + } + private void ActualTextEditWidget_EnterPressed(object sender, KeyEventArgs keyEvent) { SubmitForm(); @@ -116,7 +128,7 @@ namespace MatterHackers.MatterControl private void SubmitForm() { - string newName = textToAddWidget.ActualTextEditWidget.Text; + string newName = folderNameWidget.ActualTextEditWidget.Text; if (newName != "") { string fileName = Path.ChangeExtension(Path.GetRandomFileName(), ".amf"); diff --git a/Library/LibraryDataView.cs b/Library/LibraryDataView.cs index 714286d3a..5ac0ef131 100644 --- a/Library/LibraryDataView.cs +++ b/Library/LibraryDataView.cs @@ -429,7 +429,7 @@ namespace MatterHackers.MatterControl.PrintLibrary { if (parentProvider == null) { - LibraryDataView.CurrentLibraryProvider = LibraryDataView.CurrentLibraryProvider.GetProviderForItem(printItemCollection); + LibraryDataView.CurrentLibraryProvider = LibraryDataView.CurrentLibraryProvider.GetProviderForCollection(printItemCollection); } else { @@ -451,14 +451,14 @@ namespace MatterHackers.MatterControl.PrintLibrary if (provider != null && provider.ProviderKey != "ProviderSelectorKey") { PrintItemCollection parent = new PrintItemCollection("..", provider.ProviderKey); - LibraryRowItem queueItem = new LibraryRowItemCollection(parent, this, provider.ParentLibraryProvider, GetThumbnailWidget(true, provider.ParentLibraryProvider, parent)); + LibraryRowItem queueItem = new LibraryRowItemCollection(parent, -1, this, provider.ParentLibraryProvider, GetThumbnailWidget(true, provider.ParentLibraryProvider, parent)); AddListItemToTopToBottom(queueItem); } for (int i = 0; i < provider.CollectionCount; i++) { PrintItemCollection item = provider.GetCollectionItem(i); - LibraryRowItem queueItem = new LibraryRowItemCollection(item, this, null, GetThumbnailWidget(false, null, item)); + LibraryRowItem queueItem = new LibraryRowItemCollection(item, i, this, null, GetThumbnailWidget(false, null, item)); AddListItemToTopToBottom(queueItem); } diff --git a/Library/LibraryRowItemCollection.cs b/Library/LibraryRowItemCollection.cs index 8722e1bed..3c57bfd2a 100644 --- a/Library/LibraryRowItemCollection.cs +++ b/Library/LibraryRowItemCollection.cs @@ -48,10 +48,12 @@ namespace MatterHackers.MatterControl.PrintLibrary { LibraryProvider parentProvider; PrintItemCollection printItemCollection; + int collectionIndex; - public LibraryRowItemCollection(PrintItemCollection collection, LibraryDataView libraryDataView, LibraryProvider parentProvider, GuiWidget thumbnailWidget) + public LibraryRowItemCollection(PrintItemCollection collection, int collectionIndex, LibraryDataView libraryDataView, LibraryProvider parentProvider, GuiWidget thumbnailWidget) : base(libraryDataView, thumbnailWidget) { + this.collectionIndex = collectionIndex; this.parentProvider = parentProvider; this.printItemCollection = collection; this.ItemName = printItemCollection.Name; @@ -63,7 +65,7 @@ namespace MatterHackers.MatterControl.PrintLibrary public override bool Protected { - get { throw new NotImplementedException(); } + get { return false; } } public override void Export() @@ -76,14 +78,15 @@ namespace MatterHackers.MatterControl.PrintLibrary throw new NotImplementedException(); } - private static string collectionNotEmtyMessage = "The collection you are trying to delete '{0}' is not empty. Would you like to delete it anyway?".Localize(); - private static string collectionNotEmtyTitle = "Collection not Empty".Localize(); + private static string collectionNotEmtyMessage = "The folder you are trying to delete '{0}' is not empty. Would you like to delete it anyway?".Localize(); + private static string collectionNotEmtyTitle = "Folder not Empty".Localize(); private static string deleteNow = "Delete".Localize(); - private static string doNotDelete = "Do NOT Delete".Localize(); + private static string doNotDelete = "Cancel".Localize(); public override void RemoveFromCollection() { - using (LibraryProvider collectionProvider = LibraryDataView.CurrentLibraryProvider.GetProviderForItem(printItemCollection)) + // TODO: make a progress display to show that we are retieving the collection content (to check if its empty). + using (LibraryProvider collectionProvider = LibraryDataView.CurrentLibraryProvider.GetProviderForCollection(printItemCollection)) { if (collectionProvider.ItemCount > 0 || collectionProvider.CollectionCount > 0) { @@ -96,7 +99,7 @@ namespace MatterHackers.MatterControl.PrintLibrary } else { - LibraryDataView.CurrentLibraryProvider.RemoveCollection(printItemCollection); + LibraryDataView.CurrentLibraryProvider.RemoveCollection(collectionIndex); } } } @@ -105,7 +108,7 @@ namespace MatterHackers.MatterControl.PrintLibrary { if (messageBoxResponse) { - LibraryDataView.CurrentLibraryProvider.RemoveCollection(printItemCollection); + LibraryDataView.CurrentLibraryProvider.RemoveCollection(collectionIndex); } } @@ -150,7 +153,7 @@ namespace MatterHackers.MatterControl.PrintLibrary { if (parentProvider == null) { - LibraryDataView.CurrentLibraryProvider = LibraryDataView.CurrentLibraryProvider.GetProviderForItem(printItemCollection); + LibraryDataView.CurrentLibraryProvider = LibraryDataView.CurrentLibraryProvider.GetProviderForCollection(printItemCollection); } else { diff --git a/Library/LibraryRowItemPart.cs b/Library/LibraryRowItemPart.cs index ab5d1bf0a..a62bffa34 100644 --- a/Library/LibraryRowItemPart.cs +++ b/Library/LibraryRowItemPart.cs @@ -211,7 +211,7 @@ namespace MatterHackers.MatterControl.PrintLibrary public async override void RemoveFromCollection() { - LibraryDataView.CurrentLibraryProvider.RemoveItem(await this.GetPrintItemWrapperAsync()); + LibraryDataView.CurrentLibraryProvider.RemoveItem(itemIndex); } protected override SlideWidget GetItemActionButtons() @@ -275,7 +275,7 @@ namespace MatterHackers.MatterControl.PrintLibrary protected async override void RemoveThisFromPrintLibrary() { // TODO: The LibraryProvider does not need a printitemwrapper to remove an item! Why not an interger like the others? - LibraryDataView.CurrentLibraryProvider.RemoveItem(await this.GetPrintItemWrapperAsync()); + LibraryDataView.CurrentLibraryProvider.RemoveItem(itemIndex); } private void ExportQueueItemWindow_Closed(object sender, EventArgs e) diff --git a/Library/Provider/LibraryProvider.cs b/Library/Provider/LibraryProvider.cs index ac1c2c6c5..ef7fe631f 100644 --- a/Library/Provider/LibraryProvider.cs +++ b/Library/Provider/LibraryProvider.cs @@ -109,11 +109,12 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider public abstract Task GetPrintItemWrapperAsync(int itemIndex, ReportProgressRatio reportProgress = null); - public abstract LibraryProvider GetProviderForItem(PrintItemCollection collection); + // TODO: make this asnyc + public abstract LibraryProvider GetProviderForCollection(PrintItemCollection collection); - public abstract void RemoveCollection(PrintItemCollection collectionToRemove); + public abstract void RemoveCollection(int collectionIndexToRemove); - public abstract void RemoveItem(PrintItemWrapper printItemWrapper); + public abstract void RemoveItem(int itemIndexToRemove); public abstract void SaveToLibrary(PrintItemWrapper printItemWrapper, List meshGroupsToSave, List providerSavePath = null); diff --git a/Library/Provider/LibraryProviderFileSystem.cs b/Library/Provider/LibraryProviderFileSystem.cs index c51eb4bf1..67de5ce7e 100644 --- a/Library/Provider/LibraryProviderFileSystem.cs +++ b/Library/Provider/LibraryProviderFileSystem.cs @@ -184,14 +184,14 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider return new PrintItemWrapper(new DataStorage.PrintItem(Path.GetFileNameWithoutExtension(fileName), fileName), this); } - public override LibraryProvider GetProviderForItem(PrintItemCollection collection) + public override LibraryProvider GetProviderForCollection(PrintItemCollection collection) { return new LibraryProviderFileSystem(Path.Combine(rootPath, collection.Key), collection.Name, this); } - public override void RemoveCollection(PrintItemCollection collectionToRemove) + public override void RemoveCollection(int collectionIndexToRemove) { - string directoryPath = collectionToRemove.Key; + string directoryPath = Path.Combine(rootPath, currentDirectoryDirectories[collectionIndexToRemove]); if (Directory.Exists(directoryPath)) { Stopwatch time = Stopwatch.StartNew(); @@ -206,9 +206,10 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider } } - public override void RemoveItem(PrintItemWrapper printItemWrapper) + public override void RemoveItem(int itemToRemoveIndex) { - File.Delete(printItemWrapper.PrintItem.FileLocation); + string filePath = currentDirectoryFiles[itemToRemoveIndex]; + File.Delete(filePath); GetFilesAndCollectionsInCurrentDirectory(); } diff --git a/Library/Provider/LibraryProviderSelector.cs b/Library/Provider/LibraryProviderSelector.cs index 9423f108b..adc2e8c7b 100644 --- a/Library/Provider/LibraryProviderSelector.cs +++ b/Library/Provider/LibraryProviderSelector.cs @@ -219,7 +219,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider throw new NotImplementedException("Print items are not allowed at the root level"); } - public override LibraryProvider GetProviderForItem(PrintItemCollection collection) + public override LibraryProvider GetProviderForCollection(PrintItemCollection collection) { foreach (LibraryProvider libraryProvider in visibleProviders) { @@ -232,12 +232,12 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider throw new NotImplementedException(); } - public override void RemoveCollection(PrintItemCollection collectionToRemove) + public override void RemoveCollection(int collectionIndexToRemove) { throw new NotImplementedException(); } - public override void RemoveItem(PrintItemWrapper printItemWrapper) + public override void RemoveItem(int itemToRemoveIndex) { throw new NotImplementedException(); } @@ -248,10 +248,5 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider } #endregion Overriden Abstract Methods - - public static LibraryProvider GetProviderForItem(PrintItemWrapper printItemWrapper) - { - throw new NotImplementedException(); - } } } \ No newline at end of file diff --git a/Library/Provider/LibraryProviderSqlite.cs b/Library/Provider/LibraryProviderSqlite.cs index cc64bab15..426c23d1c 100644 --- a/Library/Provider/LibraryProviderSqlite.cs +++ b/Library/Provider/LibraryProviderSqlite.cs @@ -308,7 +308,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider return null; } - public override LibraryProvider GetProviderForItem(PrintItemCollection collection) + public override LibraryProvider GetProviderForCollection(PrintItemCollection collection) { return new LibraryProviderSQLite(collection, this); } @@ -337,26 +337,26 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider LibraryProvider.OnDataReloaded(null); } - public override void RemoveCollection(PrintItemCollection collectionToRemove) + public override void RemoveCollection(int collectionIndexToRemove) { - collectionToRemove.Delete(); + childCollections[collectionIndexToRemove].Delete(); LoadLibraryItems(); LibraryProvider.OnDataReloaded(null); } - public override void RemoveItem(PrintItemWrapper printItemWrapper) + public override void RemoveItem(int itemToRemoveIndex) { - int index = printItems.IndexOf(printItemWrapper); - if (index < 0) + if (itemToRemoveIndex < 0) { // It may be possible to have the same item in the remove list twice. // so if it is not in the PrintItems then ignore it. return; } - printItems.RemoveAt(index); - + // and remove it from the data base - printItemWrapper.Delete(); + printItems[itemToRemoveIndex].Delete(); + + printItems.RemoveAt(itemToRemoveIndex); LibraryProvider.OnDataReloaded(null); } diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt index 4a42be377..951aeb9a3 100644 --- a/StaticData/Translations/Master.txt +++ b/StaticData/Translations/Master.txt @@ -3391,3 +3391,9 @@ Translated:3D English:Update Status Translated:Update Status +English:The folder you are trying to delete '{0}' is not empty. Would you like to delete it anyway? +Translated:The folder you are trying to delete '{0}' is not empty. Would you like to delete it anyway? + +English:Folder not Empty +Translated:Folder not Empty + diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index a97d772d0..fbe86d831 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit a97d772d07d9c8df67a47c3e368e743199c6d835 +Subproject commit fbe86d83160e7e8eac9f25dae2928f0006d7bc5a diff --git a/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs b/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs index 2bb9ec9ef..1c807fd36 100644 --- a/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs +++ b/Tests/MatterControl.Tests/MatterControl/LibraryProviderTests.cs @@ -81,7 +81,7 @@ namespace MatterControl.Tests PrintItemWrapper itemAtRoot = testProvider.GetPrintItemWrapperAsync(0).Result; // add an item works correctly - LibraryProvider subProvider = testProvider.GetProviderForItem(testProvider.GetCollectionItem(0)); + LibraryProvider subProvider = testProvider.GetProviderForCollection(testProvider.GetCollectionItem(0)); dataReloaded = false; //itemAdded = false; string subPathAndFile = Path.Combine(createdDirectory, meshFileName); @@ -103,14 +103,14 @@ namespace MatterControl.Tests // remove item works dataReloaded = false; Assert.IsTrue(dataReloaded == false); - subProvider.RemoveItem(subProvider.GetPrintItemWrapperAsync(0).Result); + subProvider.RemoveItem(0); Assert.IsTrue(dataReloaded == true); Assert.IsTrue(!File.Exists(subPathAndFile)); // remove collection gets rid of it dataReloaded = false; Assert.IsTrue(dataReloaded == false); - testProvider.RemoveCollection(testProvider.GetCollectionItem(0)); + testProvider.RemoveCollection(0); Assert.IsTrue(dataReloaded == true); Assert.IsTrue(testProvider.CollectionCount == 0); Assert.IsTrue(!Directory.Exists(createdDirectory)); @@ -155,14 +155,14 @@ namespace MatterControl.Tests // remove item works dataReloaded = false; Assert.IsTrue(dataReloaded == false); - testProvider.RemoveItem(testProvider.GetPrintItemWrapperAsync(1).Result); + testProvider.RemoveItem(1); Assert.IsTrue(dataReloaded == true); Assert.IsTrue(!NamedItemExists(fileNameWithExtension)); // remove collection gets rid of it dataReloaded = false; Assert.IsTrue(dataReloaded == false); - testProvider.RemoveCollection(testProvider.GetCollectionItem(0)); + testProvider.RemoveCollection(0); Assert.IsTrue(dataReloaded == true); Assert.IsTrue(testProvider.CollectionCount == 0); Assert.IsTrue(!NamedCollectionExists(collectionName)); // assert that the record does not exist in the DB diff --git a/config.ini b/config.ini deleted file mode 100644 index 15c44c3eb..000000000 --- a/config.ini +++ /dev/null @@ -1,93 +0,0 @@ -# generated by Slic3r 0.9.3 on Mon Nov 5 11:30:36 2012 -acceleration = 0 -bed_size = 200,200 -bed_temperature = 0 -bridge_fan_speed = 100 -bridge_flow_ratio = 1 -bridge_speed = 60 -brim_width = 0 -complete_objects = 0 -cooling = 0 -disable_fan_first_layers = 1 -duplicate = 1 -duplicate_distance = 6 -duplicate_grid = 1,1 -end_gcode = M104 S0 ; turn off temperature\nG28 X0 ; home X axis\nM84 ; disable motors -external_perimeter_speed = 100% -extra_perimeters = 1 -extruder_clearance_height = 20 -extruder_clearance_radius = 20 -extruder_offset = 0x0 -extrusion_axis = E -extrusion_multiplier = 1 -extrusion_width = 0 -fan_always_on = 0 -fan_below_layer_time = 60 -filament_diameter = 3 -fill_angle = 45 -fill_density = 0.4 -fill_pattern = rectilinear -first_layer_bed_temperature = 0 -first_layer_extrusion_width = 200% -first_layer_height = 100% -first_layer_speed = 30% -first_layer_temperature = 200 -g0 = 0 -gcode_arcs = 0 -gcode_comments = 0 -gcode_flavor = reprap -infill_acceleration = 50 -infill_every_layers = 1 -infill_extruder = 1 -infill_extrusion_width = 0 -infill_speed = 60 -layer_gcode = -layer_height = 0.4 -max_fan_speed = 100 -min_fan_speed = 35 -min_print_speed = 10 -notes = -nozzle_diameter = 0.5 -only_retract_when_crossing_perimeters = 0 -output_filename_format = [input_filename_base].gcode -perimeter_acceleration = 25 -perimeter_extruder = 1 -perimeter_extrusion_width = 0 -perimeter_speed = 30 -perimeters = 3 -post_process = -print_center = 100,100 -randomize_start = 1 -retract_before_travel = 2 -retract_length = 1 -retract_length_toolchange = 3 -retract_lift = 0 -retract_restart_extra = 0 -retract_restart_extra_toolchange = 0 -retract_speed = 30 -rotate = 0 -scale = 1 -skirt_distance = 6 -skirt_height = 1 -skirts = 1 -slowdown_below_layer_time = 15 -small_perimeter_speed = 30 -solid_fill_pattern = rectilinear -solid_infill_below_area = 70 -solid_infill_every_layers = 0 -solid_infill_speed = 60 -solid_layers = 3 -start_gcode = G28 ; home all axes -support_material = 0 -support_material_angle = 0 -support_material_extruder = 1 -support_material_extrusion_width = 0 -support_material_pattern = rectilinear -support_material_spacing = 2.5 -support_material_threshold = 45 -temperature = 200 -threads = 2 -top_solid_infill_speed = 50 -travel_speed = 130 -use_relative_e_distances = 0 -z_offset = 0