From 2e343e5af8ddfa4ea1aded4dbf91c81106ab1a4c Mon Sep 17 00:00:00 2001 From: John Lewin Date: Thu, 7 Sep 2017 08:04:41 -0700 Subject: [PATCH] Revise int and double fields --- .../SettingsControlSelectors.cs | 1 + SlicerConfiguration/SliceSettingsWidget.cs | 5 ++-- SlicerConfiguration/UIFields/BasicField.cs | 29 +++++++++++++------ SlicerConfiguration/UIFields/DoubleField.cs | 17 ++++++++--- .../UIFields/PositiveDoubleField.cs | 20 +------------ 5 files changed, 37 insertions(+), 35 deletions(-) diff --git a/SlicerConfiguration/SettingsControlSelectors.cs b/SlicerConfiguration/SettingsControlSelectors.cs index e12c7c789..177c2119f 100644 --- a/SlicerConfiguration/SettingsControlSelectors.cs +++ b/SlicerConfiguration/SettingsControlSelectors.cs @@ -228,6 +228,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private void MenuItem_Selected(object sender, EventArgs e) { + // When a preset is selected store the current values of all known settings to compare against after applying the preset Dictionary settingBeforeChange = new Dictionary(); foreach (var keyName in PrinterSettings.KnownSettings) { diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index 2fa1aea65..def3610b1 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -870,7 +870,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration switch (settingData.DataEditType) { case SliceSettingData.DataEditTypes.INT: - uiField = new NumberField(); + uiField = new IntField(); break; case SliceSettingData.DataEditTypes.DOUBLE: @@ -886,7 +886,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration else { uiField = new DoubleField(); - } + }; break; case SliceSettingData.DataEditTypes.DOUBLE_OR_PERCENT: @@ -1003,7 +1003,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration settingsContext.SetValue(settingData.SlicerConfigName, uiField.Value); } - settingsContext.SetValue(settingData.SlicerConfigName, uiField.Value); settingsRow.UpdateStyle(); }; diff --git a/SlicerConfiguration/UIFields/BasicField.cs b/SlicerConfiguration/UIFields/BasicField.cs index 80ade346d..e98cccb4b 100644 --- a/SlicerConfiguration/UIFields/BasicField.cs +++ b/SlicerConfiguration/UIFields/BasicField.cs @@ -72,7 +72,26 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } - public class NumberField : BasicField, IUIField + public class IntField : NumberField + { + private int intValue; + + protected override string ConvertValue(string newValue) + { + decimal.TryParse(this.Value, out decimal currentValue); + intValue = (int)currentValue; + + return intValue.ToString(); + } + + protected override void OnValueChanged(FieldChangedEventArgs fieldChangedEventArgs) + { + numberEdit.ActuallNumberEdit.Value = intValue; + base.OnValueChanged(fieldChangedEventArgs); + } + } + + public abstract class NumberField : BasicField, IUIField { protected MHNumberEdit numberEdit; @@ -98,14 +117,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration this.Content = numberEdit; } - - protected override void OnValueChanged(FieldChangedEventArgs fieldChangedEventArgs) - { - int.TryParse(this.Value, out int currentValue); - numberEdit.ActuallNumberEdit.Value = currentValue; - - base.OnValueChanged(fieldChangedEventArgs); - } } public class TextField : BasicField, IUIField diff --git a/SlicerConfiguration/UIFields/DoubleField.cs b/SlicerConfiguration/UIFields/DoubleField.cs index fc3d2d8bf..f6e5fd1a1 100644 --- a/SlicerConfiguration/UIFields/DoubleField.cs +++ b/SlicerConfiguration/UIFields/DoubleField.cs @@ -28,18 +28,27 @@ either expressed or implied, of the FreeBSD Project. */ using System; +using MatterHackers.Agg; using MatterHackers.Agg.UI; namespace MatterHackers.MatterControl.SlicerConfiguration { public class DoubleField : NumberField { - public static int DoubleEditWidth = (int)(60 * GuiWidget.DeviceScale + .5); + private double doubleValue; - public void OnValueChanged(string text) + protected override string ConvertValue(string newValue) { - double.TryParse(text, out double currentValue); - numberEdit.ActuallNumberEdit.Value = currentValue; + double.TryParse(newValue, out double currentValue); + doubleValue = (int)currentValue; + + return doubleValue.ToString(); + } + + protected override void OnValueChanged(FieldChangedEventArgs fieldChangedEventArgs) + { + numberEdit.ActuallNumberEdit.Value = doubleValue; + base.OnValueChanged(fieldChangedEventArgs); } } } diff --git a/SlicerConfiguration/UIFields/PositiveDoubleField.cs b/SlicerConfiguration/UIFields/PositiveDoubleField.cs index 0810253fd..41d580819 100644 --- a/SlicerConfiguration/UIFields/PositiveDoubleField.cs +++ b/SlicerConfiguration/UIFields/PositiveDoubleField.cs @@ -33,25 +33,6 @@ using MatterHackers.Agg.UI; namespace MatterHackers.MatterControl.SlicerConfiguration { - - public class DoubleOrMmField : ValueOrUnitsField - { - protected override string ConvertValue(string newValue) - { - string text = newValue.Trim(); - - int tokenIndex = text.IndexOf(unitsToken); - bool hasUnitsToken = tokenIndex != -1; - if (hasUnitsToken) - { - text = text.Substring(0, tokenIndex); - } - - double.TryParse(text, out double currentValue); - return currentValue + (hasUnitsToken ? unitsToken : ""); - } - } - public class BoundDoubleField : TextField { private const string ValuesDifferToken = "-"; @@ -82,6 +63,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration // If this setting sets other settings, then do that. if (ChangesMultipleOtherSettings) { + // Iterate over each bound setting pushing the current value into each for (int i = 0; i < settingData.SetSettingsOnChange.Count; i++) { string slicerConfigName = settingData.SetSettingsOnChange[i]["TargetSetting"];