From 35080277d7bbad93b1f6e8f9bed8a016cc1a6afe Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Wed, 8 Jun 2016 17:59:03 -0700 Subject: [PATCH] New edit printer settings page. --- ControlElements/AttentionGetter.cs | 16 +--- MatterControl.csproj | 1 + SetupWizard/AndroidSetupOptionsPage.cs | 1 + SetupWizard/EditPrinterSettingsPage.cs | 72 +++++++++++++++ SlicerConfiguration/SliceSettingsWidget.cs | 102 +++++++++++++-------- StaticData/SliceSettings/Properties.json | 2 +- 6 files changed, 145 insertions(+), 49 deletions(-) create mode 100644 SetupWizard/EditPrinterSettingsPage.cs diff --git a/ControlElements/AttentionGetter.cs b/ControlElements/AttentionGetter.cs index b96656056..8760565b8 100644 --- a/ControlElements/AttentionGetter.cs +++ b/ControlElements/AttentionGetter.cs @@ -71,20 +71,12 @@ namespace MatterHackers.MatterControl testRunner.TimeToMoveMouse = 0; testRunner.UpDelaySeconds = 0; - if (testRunner.NameExists("Done")) + UiThread.RunOnIdle(() => { - testRunner.ClickByName("Done"); - testRunner.Wait(.2); - } + WizardWindow.Show("EditSettings", "Edit Printer Settings"); + }); - if (testRunner.NameExists("SettingsAndControls")) - { - testRunner.ClickByName("SettingsAndControls", 5); - testRunner.Wait(.2); - } - testRunner.ClickByName("Slice Settings Tab", .1); - testRunner.ClickByName("Printer Tab", .2); - testRunner.ClickByName("Connection Tab", .1); + testRunner.Wait(.5); if (widgetNameToHighlight.Contains(",")) { diff --git a/MatterControl.csproj b/MatterControl.csproj index e393f1a8a..a46d254cf 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -247,6 +247,7 @@ + diff --git a/SetupWizard/AndroidSetupOptionsPage.cs b/SetupWizard/AndroidSetupOptionsPage.cs index c7025f2b7..ec6a68c34 100644 --- a/SetupWizard/AndroidSetupOptionsPage.cs +++ b/SetupWizard/AndroidSetupOptionsPage.cs @@ -132,6 +132,7 @@ namespace MatterHackers.MatterControl printerSelectorAndEditButton.AddChild(printerSelector); var editButton = TextImageButtonFactory.GetThemedEditButton(); + editButton.ToolTipText = "Edit Selected Setting".Localize(); editButton.VAnchor = VAnchor.ParentCenter; editButton.Click += UiNavigation.GoToEditPrinter_Click; printerSelectorAndEditButton.AddChild(editButton); diff --git a/SetupWizard/EditPrinterSettingsPage.cs b/SetupWizard/EditPrinterSettingsPage.cs new file mode 100644 index 000000000..03889c27a --- /dev/null +++ b/SetupWizard/EditPrinterSettingsPage.cs @@ -0,0 +1,72 @@ +/* +Copyright (c) 2016, Kevin Pope, John Lewin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +using System; + +using MatterHackers.Agg; +using MatterHackers.Agg.UI; +using MatterHackers.Localizations; +using MatterHackers.MatterControl.PrinterCommunication; +using MatterHackers.MatterControl.CustomWidgets; +using MatterHackers.MatterControl.SlicerConfiguration; + +namespace MatterHackers.MatterControl +{ + public class EditPrinterSettingsPage : WizardPage + { + public EditPrinterSettingsPage() + : base("Done") + { + headerLabel.Text = "Current Settings".Localize(); + + textImageButtonFactory.borderWidth = 1; + textImageButtonFactory.normalBorderColor = RGBA_Bytes.White; + + int tabIndex = 0; + AddNameSetting("MatterControl.PrinterName", contentRow, ref tabIndex); + AddNameSetting("MatterControl.AutoConnect", contentRow, ref tabIndex); + AddNameSetting("MatterControl.ComPort", contentRow, ref tabIndex); + AddNameSetting("MatterControl.DeletePrinter", contentRow, ref tabIndex); + + footerRow.AddChild(new HorizontalSpacer()); + footerRow.AddChild(cancelButton); + + cancelButton.Text = "Back".Localize(); + } + + private void AddNameSetting(string sliceSettingsKey, FlowLayoutWidget contentRow, ref int tabIndex) + { + GuiWidget control = SliceSettingsWidget.CreateSettingControl(sliceSettingsKey, ref tabIndex); + if (control != null) + { + contentRow.AddChild(control); + } + } + } +} diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index f6a412064..a2eb2f5e7 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -381,7 +381,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { addedSettingToSubGroup = true; bool addControl; - GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, copyIndex, out addControl); + GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, layerCascade, persistenceLayer, viewFilter, copyIndex, out addControl, ref tabIndexForItem); if (addControl) { topToBottomSettings.AddChild(controlsForThisSetting); @@ -549,7 +549,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (ActiveSliceSettings.Instance.ActiveSliceEngine().MapContains(settingData.SlicerConfigName)) { bool addControl; - GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, 0, out addControl); + GuiWidget controlsForThisSetting = CreateSettingInfoUIControls(settingData, layerCascade, persistenceLayer, viewFilter, 0, out addControl, ref tabIndexForItem); if (addControl) { topToBottomSettings.AddChild(controlsForThisSetting); @@ -576,7 +576,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return leftSideGroupTabs; } - private GuiWidget GetExtraSettingsWidget(OrganizerSettingsData settingData) + private static GuiWidget GetExtraSettingsWidget(OrganizerSettingsData settingData) { var nameHolder = new GuiWidget(HAnchor.ParentLeftRight, VAnchor.FitToChildren | VAnchor.ParentCenter) { @@ -591,9 +591,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public static RootedObjectEventHandler SettingChanged = new RootedObjectEventHandler(); - private void OnSettingsChanged(OrganizerSettingsData settingData) + static private void OnSettingsChanged(OrganizerSettingsData settingData) { - SettingChanged.CallEvents(this, new StringEventArgs(settingData.SlicerConfigName)); + SettingChanged.CallEvents(null, new StringEventArgs(settingData.SlicerConfigName)); if (settingToReloadUiWhenChanged.Contains(settingData.SlicerConfigName)) { @@ -643,7 +643,30 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return ActiveSliceSettings.Instance.GetActiveValue(slicerConfigName, layerCascade); } - private GuiWidget CreateSettingInfoUIControls(OrganizerSettingsData settingData, int extruderIndex, out bool addControl) + public static GuiWidget CreateSettingControl(string sliceSettingsKey, ref int tabIndex) + { + bool addControl; + GuiWidget settingsRow = CreateSettingInfoUIControls( + SliceSettingsOrganizer.Instance.GetSettingsData(sliceSettingsKey), + null, + ActiveSliceSettings.Instance.UserLayer, + NamedSettingsLayers.All, + 0, + out addControl, + ref tabIndex + ); + + if(addControl) + { + return settingsRow; + } + + return null; + } + + private static GuiWidget CreateSettingInfoUIControls(OrganizerSettingsData settingData, List layerCascade, SettingsLayer persistenceLayer, + NamedSettingsLayers viewFilter, + int extruderIndex, out bool addControl, ref int tabIndexForItem) { addControl = true; GuiWidget container = new GuiWidget(); @@ -717,7 +740,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; intEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); + SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); @@ -728,7 +751,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (settingData.QuickMenuSettings.Count > 0) { - dataArea.AddChild(CreateQuickMenu(settingData, content, intEditWidget.ActuallNumberEdit.InternalTextEditWidget)); + dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, intEditWidget.ActuallNumberEdit.InternalTextEditWidget, layerCascade)); } else { @@ -755,7 +778,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); + SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); @@ -827,12 +850,12 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { foreach (string setting in settingData.SetSettingsOnChange) { - SaveSetting(setting, numberEdit.Value.ToString() + "mm"); + SaveSetting(setting, numberEdit.Value.ToString() + "mm", persistenceLayer); } } // also always save to the local setting - SaveSetting(settingData.SlicerConfigName, numberEdit.Value.ToString()); + SaveSetting(settingData.SlicerConfigName, numberEdit.Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); }; @@ -841,7 +864,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (settingData.QuickMenuSettings.Count > 0) { - dataArea.AddChild(CreateQuickMenu(settingData, content, doubleEditWidget.ActuallNumberEdit.InternalTextEditWidget)); + dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, doubleEditWidget.ActuallNumberEdit.InternalTextEditWidget, layerCascade)); } else { @@ -870,7 +893,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); + SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); }; @@ -914,7 +937,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration text += "%"; } textEditWidget.Text = text; - SaveSetting(settingData.SlicerConfigName, textEditWidget.Text); + SaveSetting(settingData.SlicerConfigName, textEditWidget.Text, persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); @@ -936,7 +959,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (settingData.QuickMenuSettings.Count > 0) { - dataArea.AddChild(CreateQuickMenu(settingData, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget)); + dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget, layerCascade)); } else { @@ -990,7 +1013,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration textEditWidget.Text = text; startingText = stringEdit.Text; } - SaveSetting(settingData.SlicerConfigName, textEditWidget.Text); + SaveSetting(settingData.SlicerConfigName, textEditWidget.Text, persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); @@ -1025,7 +1048,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (settingData.QuickMenuSettings.Count > 0) { - dataArea.AddChild(CreateQuickMenu(settingData, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget)); + dataArea.AddChild(CreateQuickMenu(settingData, persistenceLayer, content, stringEdit.ActualTextEditWidget.InternalTextEditWidget, layerCascade)); } else { @@ -1053,7 +1076,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration checkBoxWidget.Click += (sender, e) => { bool isChecked = ((CheckBox)sender).Checked; - SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0"); + SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0", persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); @@ -1079,7 +1102,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration stringEdit.ActualTextEditWidget.EditComplete += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text); + SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text, persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); @@ -1105,7 +1128,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration stringEdit.ActualTextEditWidget.EditComplete += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text.Replace("\n", "\\n")); + SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text.Replace("\n", "\\n"), persistenceLayer); settingsRow.UpdateStyle(); OnSettingsChanged(settingData); @@ -1141,10 +1164,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration selectableOptions.Click += (s, e) => { - AddComMenuItems(settingData, settingsRow, selectableOptions); + AddComMenuItems(settingData, persistenceLayer, settingsRow, selectableOptions); }; - AddComMenuItems(settingData, settingsRow, selectableOptions); + AddComMenuItems(settingData, persistenceLayer, settingsRow, selectableOptions); dataArea.AddChild(selectableOptions); @@ -1203,7 +1226,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration newItem.Selected += (sender, e) => { MenuItem menuItem = ((MenuItem)sender); - SaveSetting(settingData.SlicerConfigName, menuItem.Text); + SaveSetting(settingData.SlicerConfigName, menuItem.Text, persistenceLayer); settingsRow.UpdateStyle(); @@ -1235,7 +1258,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration checkBoxWidget.CheckedStateChanged += (sender, e) => { bool isChecked = ((CheckBox)sender).Checked; - SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0"); + SaveSetting(settingData.SlicerConfigName, isChecked ? "1" : "0", persistenceLayer); settingsRow.UpdateStyle(); @@ -1281,7 +1304,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); + SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); @@ -1296,7 +1319,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); + SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); @@ -1352,7 +1375,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { int extruderIndexLocal = extruderIndex; - SaveCommaSeparatedIndexSetting(extruderIndexLocal, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString()); + SaveCommaSeparatedIndexSetting(extruderIndexLocal, layerCascade, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); @@ -1368,7 +1391,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { int extruderIndexLocal = extruderIndex; - SaveCommaSeparatedIndexSetting(extruderIndexLocal, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString()); + SaveCommaSeparatedIndexSetting(extruderIndexLocal, layerCascade, settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString(), persistenceLayer); settingsRow.UpdateStyle(); @@ -1444,7 +1467,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { if (persistenceLayer.ContainsKey(settingData.SlicerConfigName)) { - switch (this.viewFilter) + switch (viewFilter) { case NamedSettingsLayers.All: if (settingData.ShowAsOverride) @@ -1492,7 +1515,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return container; } - private void AddComMenuItems(OrganizerSettingsData settingData, SettingsRow settingsRow, DropDownList selectableOptions) + private static void AddComMenuItems(OrganizerSettingsData settingData, SettingsLayer persistenceLayer, SettingsRow settingsRow, DropDownList selectableOptions) { selectableOptions.MenuItems.Clear(); string machineSpecificComPortValue = ActiveSliceSettings.Instance.ComPort(); @@ -1556,7 +1579,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return imageBuffer; } - private GuiWidget CreateQuickMenu(OrganizerSettingsData settingData, GuiWidget content, InternalTextEditWidget internalTextWidget) + private static GuiWidget CreateQuickMenu(OrganizerSettingsData settingData, SettingsLayer persistenceLayer, GuiWidget content, InternalTextEditWidget internalTextWidget, List layerCascade) { string sliceSettingValue = GetActiveValue(settingData.SlicerConfigName, layerCascade); FlowLayoutWidget totalContent = new FlowLayoutWidget(); @@ -1576,7 +1599,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration newItem.Selected += (sender, e) => { - SaveSetting(settingData.SlicerConfigName, valueLocal); + SaveSetting(settingData.SlicerConfigName, valueLocal, persistenceLayer); OnSettingsChanged(settingData); internalTextWidget.Text = valueLocal; internalTextWidget.OnEditComplete(null); @@ -1590,6 +1613,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration content.VAnchor = VAnchor.ParentCenter; totalContent.AddChild(content); + EventHandler localUnregisterEvents = null; + SettingChanged.RegisterEvent((sender, e) => { bool foundSetting = false; @@ -1609,12 +1634,17 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { selectableOptions.SelectedLabel = "Custom"; } - }, ref unregisterEvents); + }, ref localUnregisterEvents); + + totalContent.Closed += (s, e) => + { + localUnregisterEvents?.Invoke(s, e); + }; return totalContent; } - private void SaveCommaSeparatedIndexSetting(int extruderIndexLocal, string slicerConfigName, string newSingleValue) + private static void SaveCommaSeparatedIndexSetting(int extruderIndexLocal, List layerCascade, string slicerConfigName, string newSingleValue, SettingsLayer persistenceLayer) { string[] settings = GetActiveValue(slicerConfigName, layerCascade).Split(','); if (settings.Length > extruderIndexLocal) @@ -1641,7 +1671,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } string newValue = string.Join(",", settings); - SaveSetting(slicerConfigName, newValue); + SaveSetting(slicerConfigName, newValue, persistenceLayer); } protected void ReloadOptions(object sender, EventArgs e) @@ -1649,7 +1679,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration ApplicationController.Instance.ReloadAdvancedControlsPanel(); } - private void SaveSetting(string name, string value) + private static void SaveSetting(string name, string value, SettingsLayer persistenceLayer) { if (persistenceLayer == null) { diff --git a/StaticData/SliceSettings/Properties.json b/StaticData/SliceSettings/Properties.json index 032ec5f24..0ee2d8a3f 100644 --- a/StaticData/SliceSettings/Properties.json +++ b/StaticData/SliceSettings/Properties.json @@ -1235,7 +1235,7 @@ }, { "SlicerConfigName": "MatterControl.PrinterName", - "PresentationName": "", + "PresentationName": "Printer Name", "HelpText": "This is the name of your printer that will be displayed in the choose printer menu.", "DataEditType": "STRING", "ExtraSettings": "",