From 65ef2a554371db17de35abef4a67a61d39b28ca8 Mon Sep 17 00:00:00 2001 From: Kevin Pope Date: Tue, 20 May 2014 10:44:46 -0700 Subject: [PATCH] Refactor 'Save on enter' in PartEditing form --- PartPreviewWindow/SaveAsWindow.cs | 113 ++++++++++++++---------------- 1 file changed, 51 insertions(+), 62 deletions(-) diff --git a/PartPreviewWindow/SaveAsWindow.cs b/PartPreviewWindow/SaveAsWindow.cs index 725ba6619..0f60fc5ec 100644 --- a/PartPreviewWindow/SaveAsWindow.cs +++ b/PartPreviewWindow/SaveAsWindow.cs @@ -13,19 +13,26 @@ using MatterHackers.MatterControl.DataStorage; using MatterHackers.Localizations; using MatterHackers.MatterControl.PrintLibrary; using MatterHackers.MatterControl.PrintQueue; +using MatterHackers.MatterControl.CustomWidgets; namespace MatterHackers.MatterControl { public class SaveAsWindow : SystemWindow { - protected TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory (); + TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory (); + MHTextEditWidget textToAddWidget; + CheckBox addToLibraryOption; public delegate void SetPrintItemWrapperAndSave(PrintItemWrapper printItemWrapper); + SetPrintItemWrapperAndSave functionToCallOnSaveAs; + public SaveAsWindow(SetPrintItemWrapperAndSave functionToCallOnSaveAs) : base (480, 250) { Title = "MatterControl - Save As"; + this.functionToCallOnSaveAs = functionToCallOnSaveAs; + FlowLayoutWidget topToBottom = new FlowLayoutWidget(FlowDirection.TopToBottom); topToBottom.AnchorAll(); topToBottom.Padding = new BorderDouble(3, 0, 3, 5); @@ -71,23 +78,19 @@ namespace MatterHackers.MatterControl textBoxHeaderFull.Margin = new BorderDouble (5); textBoxHeaderFull.HAnchor = HAnchor.ParentLeftRight; - //Adds text box and check box to the above container - MHTextEditWidget textToAddWidget = new MHTextEditWidget("", pixelWidth: 300, messageWhenEmptyAndNotSelected: "Enter a Design Name Here"); + textToAddWidget = new MHTextEditWidget("", pixelWidth: 300, messageWhenEmptyAndNotSelected: "Enter a Design Name Here"); textToAddWidget.HAnchor = HAnchor.ParentLeftRight; textToAddWidget.Margin = new BorderDouble(5); - GuiWidget cTSpacer = new GuiWidget(); - cTSpacer.HAnchor = HAnchor.ParentLeftRight; - - CheckBox addToLibraryOption = new CheckBox("Also save to Library", ActiveTheme.Instance.PrimaryTextColor); + addToLibraryOption = new CheckBox("Also save to Library", ActiveTheme.Instance.PrimaryTextColor); addToLibraryOption.Margin = new BorderDouble (5); addToLibraryOption.HAnchor = HAnchor.ParentLeftRight; presetsFormContainer.AddChild(textBoxHeader); presetsFormContainer.AddChild (textBoxHeaderFull); presetsFormContainer.AddChild(textToAddWidget); - presetsFormContainer.AddChild(cTSpacer); + presetsFormContainer.AddChild(new HorizontalSpacer()); presetsFormContainer.AddChild(addToLibraryOption); topToBottom.AddChild(presetsFormContainer); @@ -103,63 +106,12 @@ namespace MatterHackers.MatterControl saveAsButton.Visible = true; saveAsButton.Cursor = Cursors.Hand; buttonRow.AddChild(saveAsButton); - saveAsButton.Click += (sender, e) => - { - string newName = textToAddWidget.ActualTextEditWidget.Text; - if (newName != "") - { - string fileName = "{0}.stl".FormatWith(Path.GetRandomFileName()); - string fileNameAndPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationLibraryDataPath, fileName); - PrintItem printItem = new PrintItem(); - printItem.Name = newName; - printItem.FileLocation = Path.GetFullPath(fileNameAndPath); - printItem.PrintItemCollectionID = LibraryData.Instance.LibraryCollection.Id; - printItem.Commit(); - - PrintItemWrapper printItemWrapper = new PrintItemWrapper(printItem); - QueueData.Instance.AddItem(printItemWrapper); - - if (addToLibraryOption.Checked) - { - LibraryData.Instance.AddItem(printItemWrapper); - } - - functionToCallOnSaveAs(printItemWrapper); - CloseOnIdle(); - } - }; - - textToAddWidget.ActualTextEditWidget.EnterPressed += (object sender, KeyEventArgs e) => - { - string newName = textToAddWidget.ActualTextEditWidget.Text; - if (newName != "") - { - string fileName = "{0}.stl".FormatWith (Path.GetRandomFileName ()); - string fileNameAndPath = Path.Combine (ApplicationDataStorage.Instance.ApplicationLibraryDataPath, fileName); - - PrintItem printItem = new PrintItem (); - printItem.Name = newName; - printItem.FileLocation = Path.GetFullPath (fileNameAndPath); - printItem.PrintItemCollectionID = LibraryData.Instance.LibraryCollection.Id; - printItem.Commit (); - - PrintItemWrapper printItemWrapper = new PrintItemWrapper (printItem); - QueueData.Instance.AddItem (printItemWrapper); - - if (addToLibraryOption.Checked) { - LibraryData.Instance.AddItem (printItemWrapper); - } - - functionToCallOnSaveAs (printItemWrapper); - CloseOnIdle (); - } - }; + saveAsButton.Click += new ButtonBase.ButtonEventHandler(saveAsButton_Click); + textToAddWidget.ActualTextEditWidget.EnterPressed += new KeyEventHandler(ActualTextEditWidget_EnterPressed); //Adds SaveAs and Close Button to button container - GuiWidget hButtonSpacer = new GuiWidget(); - hButtonSpacer.HAnchor = HAnchor.ParentLeftRight; - buttonRow.AddChild(hButtonSpacer); + buttonRow.AddChild(new HorizontalSpacer()); Button cancelButton = textImageButtonFactory.Generate ("Cancel", centerText: true); cancelButton.Visible = true; @@ -174,6 +126,43 @@ namespace MatterHackers.MatterControl ShowAsSystemWindow (); } + + void ActualTextEditWidget_EnterPressed(object sender, KeyEventArgs keyEvent) + { + SubmitForm(); + } + + void saveAsButton_Click(object sender, MouseEventArgs mouseEvent) + { + SubmitForm(); + } + + private void SubmitForm() + { + string newName = textToAddWidget.ActualTextEditWidget.Text; + if (newName != "") + { + string fileName = "{0}.stl".FormatWith(Path.GetRandomFileName()); + string fileNameAndPath = Path.Combine(ApplicationDataStorage.Instance.ApplicationLibraryDataPath, fileName); + + PrintItem printItem = new PrintItem(); + printItem.Name = newName; + printItem.FileLocation = Path.GetFullPath(fileNameAndPath); + printItem.PrintItemCollectionID = LibraryData.Instance.LibraryCollection.Id; + printItem.Commit(); + + PrintItemWrapper printItemWrapper = new PrintItemWrapper(printItem); + QueueData.Instance.AddItem(printItemWrapper); + + if (addToLibraryOption.Checked) + { + LibraryData.Instance.AddItem(printItemWrapper); + } + + functionToCallOnSaveAs(printItemWrapper); + CloseOnIdle(); + } + } } }