From b327b95e4a915a7fc529e468017e1438fd3ff721 Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sun, 6 Jan 2019 13:19:01 -0800 Subject: [PATCH] Move settings dictionary into PrinterSettings --- .../Settings/PrinterSettings.cs | 18 ++++++++++++++---- .../Settings/SettingsOrganizer.cs | 16 +--------------- .../ActionBar/TemperatureWidgetBed.cs | 2 +- .../ActionBar/TemperatureWidgetExtruder.cs | 2 +- .../ApplicationView/PrinterConfig.cs | 4 ++-- .../ApplicationView/SettingsValidation.cs | 2 +- .../ApplicationView/SettingsValidationError.cs | 2 +- .../View3D/PrinterBar/PrintPopupMenu.cs | 4 ++-- .../SlicerConfiguration/SliceSettingsRow.cs | 2 +- .../SlicerConfiguration/SliceSettingsWidget.cs | 2 +- .../SliceSettingsTests.cs | 2 +- .../MatterControl/MatterControlUtilities.cs | 2 +- 12 files changed, 27 insertions(+), 31 deletions(-) diff --git a/MatterControl.Printing/Settings/PrinterSettings.cs b/MatterControl.Printing/Settings/PrinterSettings.cs index 2104ee19b..0e92ffc65 100644 --- a/MatterControl.Printing/Settings/PrinterSettings.cs +++ b/MatterControl.Printing/Settings/PrinterSettings.cs @@ -56,6 +56,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration // Year|month|day|versionForDay (to support multiple revisions on a given day) public static int LatestVersion { get; } = 201606271; + public static Dictionary SettingsData { get; } + public static event EventHandler AnyPrinterSettingChanged; public event EventHandler SettingChanged; @@ -91,9 +93,17 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public PrinterSettingsLayer StagedUserSettings { get; set; } = new PrinterSettingsLayer(); - static PrinterSettings() { + string propertiesFileContents = AggContext.StaticData.ReadAllText(Path.Combine("SliceSettings", "Properties.json")); + var propertiesJsonData = JsonConvert.DeserializeObject>(propertiesFileContents); + + SettingsData = new Dictionary(); + foreach (var settingsData in propertiesJsonData) + { + SettingsData.Add(settingsData.SlicerConfigName, settingsData); + } + Empty = new PrinterSettings() { ID = "EmptyProfile" }; Empty.UserLayer[SettingsKey.printer_name] = "Empty Printer"; } @@ -650,7 +660,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration keysToRetain.Remove(SettingsKey.print_leveling_enabled); // Iterate all items that have .ShowAsOverride = false and conditionally add to the retention list - foreach (var item in SettingsOrganizer.SettingsData.Values.Where(settingsItem => settingsItem.ShowAsOverride == false)) + foreach (var item in PrinterSettings.SettingsData.Values.Where(settingsItem => settingsItem.ShowAsOverride == false)) { switch (item.SlicerConfigName) { @@ -855,7 +865,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration foreach (var keyValue in this.BaseLayer) { // Add key/value to accumulating string for hash - SliceSettingData data = SettingsOrganizer.SettingsData[keyValue.Key]; + SliceSettingData data = PrinterSettings.SettingsData[keyValue.Key]; if (data?.RebuildGCodeOnChange == true) { bigStringForHashCode.Append(keyValue.Key); @@ -940,7 +950,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration RestoreUserOverride(layer, settingsKey); } - if (SettingsOrganizer.SettingsData.TryGetValue(settingsKey, out SliceSettingData settingData)) + if (PrinterSettings.SettingsData.TryGetValue(settingsKey, out SliceSettingData settingData)) { if (settingData.DataEditType == SliceSettingData.DataEditTypes.CHECK_BOX) { diff --git a/MatterControl.Printing/Settings/SettingsOrganizer.cs b/MatterControl.Printing/Settings/SettingsOrganizer.cs index c973b520a..a41ef5920 100644 --- a/MatterControl.Printing/Settings/SettingsOrganizer.cs +++ b/MatterControl.Printing/Settings/SettingsOrganizer.cs @@ -45,20 +45,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration private static SettingsOrganizer instance = null; - public static Dictionary SettingsData { get; } - - static SettingsOrganizer() - { - string propertiesFileContents = AggContext.StaticData.ReadAllText(Path.Combine("SliceSettings", "Properties.json")); - var propertiesJsonData = JsonConvert.DeserializeObject>(propertiesFileContents); - - SettingsData = new Dictionary(); - foreach (var settingsData in propertiesJsonData) - { - SettingsData.Add(settingsData.SlicerConfigName, settingsData); - } - } - public static SettingsOrganizer Instance { get @@ -122,7 +108,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration break; case 8: - if (SettingsData.TryGetValue(sanitizedLine, out SliceSettingData data)) + if (PrinterSettings.SettingsData.TryGetValue(sanitizedLine, out SliceSettingData data)) { subGroupToAddTo.Settings.Add(data); data.OrganizerSubGroup = subGroupToAddTo; diff --git a/MatterControlLib/ActionBar/TemperatureWidgetBed.cs b/MatterControlLib/ActionBar/TemperatureWidgetBed.cs index dcb378336..55b8294e0 100644 --- a/MatterControlLib/ActionBar/TemperatureWidgetBed.cs +++ b/MatterControlLib/ActionBar/TemperatureWidgetBed.cs @@ -117,7 +117,7 @@ namespace MatterHackers.MatterControl.ActionBar int tabIndex = 0; var settingsContext = new SettingsContext(printer, null, NamedSettingsLayers.All); - var settingsData = SettingsOrganizer.SettingsData[SettingsKey.bed_temperature]; + var settingsData = PrinterSettings.SettingsData[SettingsKey.bed_temperature]; var temperatureRow = SliceSettingsTabView.CreateItemRow(settingsData, settingsContext, printer, menuTheme, ref tabIndex, allUiFields); container.AddChild(temperatureRow); diff --git a/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs b/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs index c19c360b7..ea3c7bf82 100644 --- a/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs +++ b/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs @@ -271,7 +271,7 @@ namespace MatterHackers.MatterControl.ActionBar var settingsContext = new SettingsContext(printer, null, NamedSettingsLayers.All); // TODO: Add guards around computed settings key to handle invalid/missing keys - var settingsData = SettingsOrganizer.SettingsData[TemperatureKey]; + var settingsData = PrinterSettings.SettingsData[TemperatureKey]; var temperatureRow = SliceSettingsTabView.CreateItemRow(settingsData, settingsContext, printer, menuTheme, ref tabIndex, allUiFields); container.AddChild(temperatureRow); diff --git a/MatterControlLib/ApplicationView/PrinterConfig.cs b/MatterControlLib/ApplicationView/PrinterConfig.cs index ef1eb6761..805c3dc78 100644 --- a/MatterControlLib/ApplicationView/PrinterConfig.cs +++ b/MatterControlLib/ApplicationView/PrinterConfig.cs @@ -265,7 +265,7 @@ namespace MatterHackers.MatterControl bool valueIsClear = currentValue == "0" | currentValue == ""; - SliceSettingData data = SettingsOrganizer.SettingsData[keyValue.Key]; + SliceSettingData data = PrinterSettings.SettingsData[keyValue.Key]; if (data?.ResetAtEndOfPrint == true && !valueIsClear) { this.Settings.ClearValue(keyValue.Key); @@ -372,7 +372,7 @@ namespace MatterHackers.MatterControl if (stringEvent != null) { // Fire ReloadAll if changed setting marked with ReloadUiWhenChanged - if (SettingsOrganizer.SettingsData.TryGetValue(stringEvent.Data, out SliceSettingData settingsData) + if (PrinterSettings.SettingsData.TryGetValue(stringEvent.Data, out SliceSettingData settingsData) && settingsData.ReloadUiWhenChanged) { UiThread.RunOnIdle(() => diff --git a/MatterControlLib/ApplicationView/SettingsValidation.cs b/MatterControlLib/ApplicationView/SettingsValidation.cs index 123c7757d..404230744 100644 --- a/MatterControlLib/ApplicationView/SettingsValidation.cs +++ b/MatterControlLib/ApplicationView/SettingsValidation.cs @@ -308,7 +308,7 @@ namespace MatterHackers.MatterControl private static string GetSettingsName(string settingsKey) { - var settingData = SettingsOrganizer.SettingsData[settingsKey]; + var settingData = PrinterSettings.SettingsData[settingsKey]; return settingData.PresentationName.Localize(); } diff --git a/MatterControlLib/ApplicationView/SettingsValidationError.cs b/MatterControlLib/ApplicationView/SettingsValidationError.cs index c27451680..e22c81f72 100644 --- a/MatterControlLib/ApplicationView/SettingsValidationError.cs +++ b/MatterControlLib/ApplicationView/SettingsValidationError.cs @@ -47,7 +47,7 @@ namespace MatterHackers.MatterControl private static string SettingsLocation(string settingsKey) { - var settingData = SettingsOrganizer.SettingsData[settingsKey]; + var settingData = PrinterSettings.SettingsData[settingsKey]; var setingsSectionName = settingData.OrganizerSubGroup.Group.Category.SettingsSection.Name; if (setingsSectionName == "Advanced") diff --git a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs index fc376973a..e2d31701b 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs @@ -98,7 +98,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow foreach (var key in new[] { SettingsKey.layer_height, SettingsKey.fill_density, SettingsKey.create_raft }) { - var settingsData = SettingsOrganizer.SettingsData[key]; + var settingsData = PrinterSettings.SettingsData[key]; var row = SliceSettingsTabView.CreateItemRow(settingsData, settingsContext, printer, menuTheme, ref tabIndex, allUiFields); if (row is SliceSettingsRow settingsRow) @@ -130,7 +130,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow foreach (var key in new[] { SettingsKey.spiral_vase, SettingsKey.layer_to_pause }) { var advancedRow = SliceSettingsTabView.CreateItemRow( - SettingsOrganizer.SettingsData[key], + PrinterSettings.SettingsData[key], settingsContext, printer, menuTheme, diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs index bd3da7329..c3d6c894f 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsRow.cs @@ -339,7 +339,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; if (settingValue.Contains("%") - && SettingsOrganizer.SettingsData.TryGetValue(percentReference.ReferencedSetting, out SliceSettingData referencedSettingData)) + && PrinterSettings.SettingsData.TryGetValue(percentReference.ReferencedSetting, out SliceSettingData referencedSettingData)) { column.AddChild( new TextWidget( diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs index 9596aeafc..0adf05e2c 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs @@ -396,7 +396,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (toggleSwitchSectionKeys.TryGetValue(group.Name, out string toggleFieldKey)) { - var settingData = SettingsOrganizer.SettingsData[toggleFieldKey]; + var settingData = PrinterSettings.SettingsData[toggleFieldKey]; uiField = CreateToggleFieldForSection(settingData); } diff --git a/Tests/MatterControl.AutomationTests/SliceSettingsTests.cs b/Tests/MatterControl.AutomationTests/SliceSettingsTests.cs index 943fae751..5e9145322 100644 --- a/Tests/MatterControl.AutomationTests/SliceSettingsTests.cs +++ b/Tests/MatterControl.AutomationTests/SliceSettingsTests.cs @@ -417,7 +417,7 @@ namespace MatterHackers.MatterControl.Tests.Automation private static void SetCheckBoxSetting(AutomationRunner testRunner, PrinterConfig printer, string settingToChange, bool valueToSet) { - var settingsData = SettingsOrganizer.SettingsData[settingToChange]; + var settingsData = PrinterSettings.SettingsData[settingToChange]; string checkBoxName = $"{settingsData.PresentationName} Field"; Assert.IsTrue(printer.Settings.GetValue(settingToChange) != valueToSet); diff --git a/Tests/MatterControl.Tests/MatterControl/MatterControlUtilities.cs b/Tests/MatterControl.Tests/MatterControl/MatterControlUtilities.cs index d21bffa5b..4f99a6a73 100644 --- a/Tests/MatterControl.Tests/MatterControl/MatterControlUtilities.cs +++ b/Tests/MatterControl.Tests/MatterControl/MatterControlUtilities.cs @@ -1036,7 +1036,7 @@ namespace MatterHackers.MatterControl.Tests.Automation public static SliceSettingData NavigateToSliceSettingsField(this AutomationRunner testRunner, SettingsOrganizer.SettingsSection rootLevel, string slicerConfigName) { - var settingData = SettingsOrganizer.SettingsData[slicerConfigName]; + var settingData = PrinterSettings.SettingsData[slicerConfigName]; var subGroup = settingData.OrganizerSubGroup;