Writing a generic SetValue
Improved GetValue to match
This commit is contained in:
parent
d70c8bacf8
commit
48b26b36a6
5 changed files with 43 additions and 20 deletions
|
|
@ -69,12 +69,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
{
|
||||
get
|
||||
{
|
||||
if (UserSettings.Instance.get(UserSettingsKey.SupportMaxOverHangAngle) == null)
|
||||
{
|
||||
return 45;
|
||||
}
|
||||
|
||||
var value = UserSettings.Instance.GetValue<double>(UserSettingsKey.SupportMaxOverHangAngle);
|
||||
var value = UserSettings.Instance.GetValue<double>(UserSettingsKey.SupportMaxOverHangAngle, 45);
|
||||
if (value < 0)
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -98,7 +93,7 @@ namespace MatterHackers.MatterControl.DesignTools
|
|||
{
|
||||
get
|
||||
{
|
||||
var value = UserSettings.Instance.GetValue<double>(UserSettingsKey.SupportPillarSize, "4");
|
||||
var value = UserSettings.Instance.GetValue<double>(UserSettingsKey.SupportPillarSize, 4);
|
||||
if (value < 1.5)
|
||||
{
|
||||
return 1.5;
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ namespace MatterHackers.MatterControl.Library.Export
|
|||
{
|
||||
var levelingCheckbox = new CheckBox("Apply leveling to G-Code during export".Localize(), theme.TextColor, 10)
|
||||
{
|
||||
Checked = UserSettings.Instance.GetValue<bool>(UserSettingsKey.ApplyLevelingDurringExport, "1"),
|
||||
Checked = UserSettings.Instance.GetValue<bool>(UserSettingsKey.ApplyLevelingDurringExport, true),
|
||||
Cursor = Cursors.Hand,
|
||||
Margin = new BorderDouble(left: 10)
|
||||
};
|
||||
|
|
@ -340,7 +340,7 @@ namespace MatterHackers.MatterControl.Library.Export
|
|||
{
|
||||
try
|
||||
{
|
||||
var finalStream = GetExportStream(Printer, gCodeFileStream, UserSettings.Instance.GetValue<bool>(UserSettingsKey.ApplyLevelingDurringExport, "1"));
|
||||
var finalStream = GetExportStream(Printer, gCodeFileStream, UserSettings.Instance.GetValue<bool>(UserSettingsKey.ApplyLevelingDurringExport, true));
|
||||
|
||||
var totalLines = gCodeFileStream.GCodeFile.LineCount;
|
||||
var currentLine = 0;
|
||||
|
|
|
|||
|
|
@ -633,12 +633,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(UserSettings.Instance.get(UserSettingsKey.SnapGridDistance)))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return UserSettings.Instance.GetValue<double>(UserSettingsKey.SnapGridDistance);
|
||||
return UserSettings.Instance.GetValue<double>(UserSettingsKey.SnapGridDistance, 1);
|
||||
}
|
||||
|
||||
set
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using g3;
|
||||
using MatterHackers.Agg;
|
||||
using MatterHackers.Agg.UI;
|
||||
using MatterHackers.MatterControl.DataStorage;
|
||||
using MatterHackers.VectorMath;
|
||||
|
||||
namespace MatterHackers.MatterControl
|
||||
{
|
||||
|
|
@ -142,13 +145,13 @@ namespace MatterHackers.MatterControl
|
|||
/// <typeparam name="T">The type of value being gotten</typeparam>
|
||||
/// <param name="settingsKey">The name of the value to get</param>
|
||||
/// <returns>The typed value</returns>
|
||||
public T GetValue<T>(string settingsKey, string defaultValue = null) where T : IConvertible
|
||||
public T GetValue<T>(string settingsKey, T defaultValue)
|
||||
{
|
||||
var settingValue = this.get(settingsKey);
|
||||
|
||||
if (settingValue == null)
|
||||
{
|
||||
settingValue = defaultValue;
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
if (typeof(T) == typeof(string))
|
||||
|
|
@ -171,11 +174,41 @@ namespace MatterHackers.MatterControl
|
|||
double.TryParse(settingValue, out double result);
|
||||
return (T)(object)result;
|
||||
}
|
||||
else if (typeof(T) == typeof(Vector2))
|
||||
{
|
||||
var parts = settingValue.Split(new[] { 'X', ':', ',', 'Y', ':' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (parts.Length == 2 && double.TryParse(parts[0].Trim(), out double x) && double.TryParse(parts[1].Trim(), out double y))
|
||||
{
|
||||
Vector2 result = new Vector2(x, y);
|
||||
return (T)(object)result;
|
||||
}
|
||||
// Else, handle the case when the parsing fails...
|
||||
}
|
||||
|
||||
return (T)default(T);
|
||||
return (T)default(T);
|
||||
}
|
||||
|
||||
public string get(string key)
|
||||
public void SetValue<T>(string key, T value)
|
||||
{
|
||||
if (typeof(T) == typeof(bool))
|
||||
{
|
||||
set(key, ((bool)(object)value) ? "1" : "0");
|
||||
}
|
||||
else if (value is Vector2 vector)
|
||||
{
|
||||
set(key, $"X:{vector.X},Y:{vector.Y}");
|
||||
}
|
||||
else if (value is IConvertible convertible)
|
||||
{
|
||||
set(key, convertible.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
else
|
||||
{
|
||||
set(key, value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public string get(string key)
|
||||
{
|
||||
UserSetting userSetting;
|
||||
if (settingsDictionary.TryGetValue(key, out userSetting))
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit f6071a2cb00286954d803ca28a4dc56749752e17
|
||||
Subproject commit 42d628f0be7bf2f050f3d60cf6f7a55f92c9ad30
|
||||
Loading…
Add table
Add a link
Reference in a new issue