Revise int and double fields

This commit is contained in:
John Lewin 2017-09-07 08:04:41 -07:00
parent bb3602c3ff
commit 2e343e5af8
5 changed files with 37 additions and 35 deletions

View file

@ -228,6 +228,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
private void MenuItem_Selected(object sender, EventArgs e) 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<string, string> settingBeforeChange = new Dictionary<string, string>(); Dictionary<string, string> settingBeforeChange = new Dictionary<string, string>();
foreach (var keyName in PrinterSettings.KnownSettings) foreach (var keyName in PrinterSettings.KnownSettings)
{ {

View file

@ -870,7 +870,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
switch (settingData.DataEditType) switch (settingData.DataEditType)
{ {
case SliceSettingData.DataEditTypes.INT: case SliceSettingData.DataEditTypes.INT:
uiField = new NumberField(); uiField = new IntField();
break; break;
case SliceSettingData.DataEditTypes.DOUBLE: case SliceSettingData.DataEditTypes.DOUBLE:
@ -886,7 +886,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
else else
{ {
uiField = new DoubleField(); uiField = new DoubleField();
} };
break; break;
case SliceSettingData.DataEditTypes.DOUBLE_OR_PERCENT: 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);
} }
settingsContext.SetValue(settingData.SlicerConfigName, uiField.Value);
settingsRow.UpdateStyle(); settingsRow.UpdateStyle();
}; };

View file

@ -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; protected MHNumberEdit numberEdit;
@ -98,14 +117,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
this.Content = numberEdit; 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 public class TextField : BasicField, IUIField

View file

@ -28,18 +28,27 @@ either expressed or implied, of the FreeBSD Project.
*/ */
using System; using System;
using MatterHackers.Agg;
using MatterHackers.Agg.UI; using MatterHackers.Agg.UI;
namespace MatterHackers.MatterControl.SlicerConfiguration namespace MatterHackers.MatterControl.SlicerConfiguration
{ {
public class DoubleField : NumberField 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); double.TryParse(newValue, out double currentValue);
numberEdit.ActuallNumberEdit.Value = currentValue; doubleValue = (int)currentValue;
return doubleValue.ToString();
}
protected override void OnValueChanged(FieldChangedEventArgs fieldChangedEventArgs)
{
numberEdit.ActuallNumberEdit.Value = doubleValue;
base.OnValueChanged(fieldChangedEventArgs);
} }
} }
} }

View file

@ -33,25 +33,6 @@ using MatterHackers.Agg.UI;
namespace MatterHackers.MatterControl.SlicerConfiguration 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 public class BoundDoubleField : TextField
{ {
private const string ValuesDifferToken = "-"; private const string ValuesDifferToken = "-";
@ -82,6 +63,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
// If this setting sets other settings, then do that. // If this setting sets other settings, then do that.
if (ChangesMultipleOtherSettings) if (ChangesMultipleOtherSettings)
{ {
// Iterate over each bound setting pushing the current value into each
for (int i = 0; i < settingData.SetSettingsOnChange.Count; i++) for (int i = 0; i < settingData.SetSettingsOnChange.Count; i++)
{ {
string slicerConfigName = settingData.SetSettingsOnChange[i]["TargetSetting"]; string slicerConfigName = settingData.SetSettingsOnChange[i]["TargetSetting"];