From 98c114f79bf82ff819499d08917c7ee4e99c5fb7 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Thu, 25 Aug 2016 17:43:30 -0700 Subject: [PATCH] Got the check and uncheck of reload ui settings to work Wrote a test Added heat_extruder_before_homing --- .../Settings/SettingsHelpers.cs | 1 + SlicerConfiguration/SliceSettingsWidget.cs | 13 ++----- .../SlicerMapping/EngineMapingBase.cs | 2 +- .../SlicerMapping/EngineMappingSlic3r.cs | 2 +- .../SlicerMapping/MappingClasses.cs | 4 +- Submodules/MatterSlice | 2 +- Submodules/agg-sharp | 2 +- .../SliceSetingsTests.cs | 39 ++++++++++++++----- 8 files changed, 40 insertions(+), 25 deletions(-) diff --git a/SlicerConfiguration/Settings/SettingsHelpers.cs b/SlicerConfiguration/Settings/SettingsHelpers.cs index 2b6093512..4032935ae 100644 --- a/SlicerConfiguration/Settings/SettingsHelpers.cs +++ b/SlicerConfiguration/Settings/SettingsHelpers.cs @@ -73,6 +73,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public const string has_heated_bed = nameof(has_heated_bed); public const string has_power_control = nameof(has_power_control); public const string has_sd_card_reader = nameof(has_sd_card_reader); + public const string heat_extruder_before_homing = nameof(heat_extruder_before_homing); public const string layer_height = nameof(layer_height); public const string layer_name = nameof(layer_name); public const string layer_to_pause = nameof(layer_to_pause); diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index 547f049a3..7df69a913 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -619,7 +619,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (settingData.ReloadUiWhenChanged) { - ApplicationController.Instance.ReloadAll(null, null); + UiThread.RunOnIdle(() => ApplicationController.Instance.ReloadAll(null, null)); } } @@ -667,14 +667,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public void RefreshValue(IEnumerable layerFilters) { string latestValue = GetActiveValue(this.SettingsKey, layerFilters); - //if(latestValue != SettingsValue) - { - ValueChanged?.Invoke(latestValue); - } - - UpdateStyle?.Invoke(); - SettingsValue = latestValue; + UpdateStyle?.Invoke(); + ValueChanged?.Invoke(latestValue); } } @@ -1330,7 +1325,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration Checked = sliceSettingValue == "1" }; - checkBoxWidget.CheckedStateChanged += (sender, e) => + checkBoxWidget.Click += (sender, e) => { bool isChecked = ((CheckBox)sender).Checked; ActiveSliceSettings.Instance.SetValue(settingData.SlicerConfigName, isChecked ? "1" : "0", persistenceLayer); diff --git a/SlicerConfiguration/SlicerMapping/EngineMapingBase.cs b/SlicerConfiguration/SlicerMapping/EngineMapingBase.cs index 36e72a371..9066435ac 100644 --- a/SlicerConfiguration/SlicerMapping/EngineMapingBase.cs +++ b/SlicerConfiguration/SlicerMapping/EngineMapingBase.cs @@ -75,7 +75,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration // TODO: merge the items below into the list above after some validation - setting that weren't previously mapped to Cura but probably should be. SettingsKey.bed_remove_part_temperature, "extruder_wipe_temperature", - "heat_extruder_before_homing", + SettingsKey.heat_extruder_before_homing, "include_firmware_updater", "layer_to_pause", SettingsKey.show_reset_connection, diff --git a/SlicerConfiguration/SlicerMapping/EngineMappingSlic3r.cs b/SlicerConfiguration/SlicerMapping/EngineMappingSlic3r.cs index a7dee340b..4834876af 100644 --- a/SlicerConfiguration/SlicerMapping/EngineMappingSlic3r.cs +++ b/SlicerConfiguration/SlicerMapping/EngineMappingSlic3r.cs @@ -68,7 +68,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration hiddenSettings.Add("extruder_clearance_height"); hiddenSettings.Add("extruder_clearance_radius"); hiddenSettings.Add("wipe_shield_distance"); - hiddenSettings.Add("heat_extruder_before_homing"); + hiddenSettings.Add(SettingsKey.heat_extruder_before_homing); hiddenSettings.Add("extruders_share_temperature"); hiddenSettings.Add("print_leveling_method"); hiddenSettings.Add("solid_shell"); diff --git a/SlicerConfiguration/SlicerMapping/MappingClasses.cs b/SlicerConfiguration/SlicerMapping/MappingClasses.cs index 6352db497..21fad73f7 100644 --- a/SlicerConfiguration/SlicerMapping/MappingClasses.cs +++ b/SlicerConfiguration/SlicerMapping/MappingClasses.cs @@ -222,7 +222,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } // If we need to wait for the heaters to heat up before homing then set them to M109 (heat and wait). - if (ActiveSliceSettings.Instance.GetValue("heat_extruder_before_homing") == "1") + if (ActiveSliceSettings.Instance.GetValue(SettingsKey.heat_extruder_before_homing) == "1") { for (int extruderIndex0Based = 0; extruderIndex0Based < numberOfHeatedExtruders; extruderIndex0Based++) { @@ -270,7 +270,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration int numberOfHeatedExtruders = ActiveSliceSettings.Instance.GetValue(SettingsKey.extruder_count); // don't set the extruders to heating if we already waited for them to reach temp - if (ActiveSliceSettings.Instance.GetValue("heat_extruder_before_homing") != "1") + if (ActiveSliceSettings.Instance.GetValue(SettingsKey.heat_extruder_before_homing) != "1") { for (int extruderIndex0Based = 0; extruderIndex0Based < numberOfHeatedExtruders; extruderIndex0Based++) { diff --git a/Submodules/MatterSlice b/Submodules/MatterSlice index 2445a6a09..989e5d480 160000 --- a/Submodules/MatterSlice +++ b/Submodules/MatterSlice @@ -1 +1 @@ -Subproject commit 2445a6a09603fa6889751e715ba2ace32683d857 +Subproject commit 989e5d4801375983993fce0fb5610860029b5fa1 diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index a992a032b..a31883282 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit a992a032b25c1fa6bf407e644602b120f3e45342 +Subproject commit a3188328235701a2db67559923d28cdfaf3ff616 diff --git a/Tests/MatterControl.AutomationTests/SliceSetingsTests.cs b/Tests/MatterControl.AutomationTests/SliceSetingsTests.cs index 587d45cf9..4148959c4 100644 --- a/Tests/MatterControl.AutomationTests/SliceSetingsTests.cs +++ b/Tests/MatterControl.AutomationTests/SliceSetingsTests.cs @@ -70,30 +70,49 @@ namespace MatterHackers.MatterControl.Tests.Automation //Navigate to Local Library resultsHarness.AddTestResult(testRunner.ClickByName("SettingsAndControls", 1)); + testRunner.Wait(.5); resultsHarness.AddTestResult(testRunner.ClickByName("User Level Dropdown", 1)); resultsHarness.AddTestResult(testRunner.ClickByName("Advanced Menu Item", 1)); - resultsHarness.AddTestResult(testRunner.ClickByName("Skirt and Raft Tab", 1)); + testRunner.Wait(.5); resultsHarness.AddTestResult(testRunner.ClickByName("Printer Tab", 1)); resultsHarness.AddTestResult(testRunner.ClickByName("Features Tab", 1)); - resultsHarness.AddTestResult(testRunner.ClickByName("Has Fan Checkbox", 1)); - // Assert that the checkbox is currently unchecked, and there is no user override - bool hasFan = ActiveSliceSettings.Instance.GetValue(SettingsKey.has_fan); - // Click the checkbox - // Assert the checkbox is checked and the user override is set - // Click the cancel user override button - // Assert the checkbox is unchecked and there is no user override + CheckAndUncheckSetting(resultsHarness, testRunner, SettingsKey.heat_extruder_before_homing, "Heat Before Homing Checkbox", false); + CheckAndUncheckSetting(resultsHarness, testRunner, SettingsKey.has_fan, "Has Fan Checkbox", true); MatterControlUtilities.CloseMatterControl(testRunner); } }; - AutomationTesterHarness testHarness = MatterControlUtilities.RunTest(testToRun, overrideWidth: 1224, overrideHeight: 800); + AutomationTesterHarness testHarness = MatterControlUtilities.RunTest(testToRun, overrideWidth: 1224, overrideHeight: 900); Assert.IsTrue(testHarness.AllTestsPassed); - Assert.IsTrue(testHarness.TestCount == 7); // make sure we ran all our tests + Assert.IsTrue(testHarness.TestCount == 27); // make sure we ran all our tests + } + + private static void CheckAndUncheckSetting(AutomationTesterHarness resultsHarness, AutomationRunner testRunner, string settingToChange, string checkBoxName, bool expected) + { + // Assert that the checkbox is currently unchecked, and there is no user override + resultsHarness.AddTestResult(ActiveSliceSettings.Instance.GetValue(settingToChange) == expected); + resultsHarness.AddTestResult(ActiveSliceSettings.Instance.UserLayer.ContainsKey(settingToChange) == false); + + // Click the checkbox + resultsHarness.AddTestResult(testRunner.ClickByName(checkBoxName, 1)); + testRunner.Wait(2); + + // Assert the checkbox is checked and the user override is set + resultsHarness.AddTestResult(ActiveSliceSettings.Instance.GetValue(settingToChange) != expected); + resultsHarness.AddTestResult(ActiveSliceSettings.Instance.UserLayer.ContainsKey(settingToChange) == true); + + // Click the cancel user override button + resultsHarness.AddTestResult(testRunner.ClickByName("Restore " + settingToChange, 1)); + testRunner.Wait(2); + + // Assert the checkbox is unchecked and there is no user override + resultsHarness.AddTestResult(ActiveSliceSettings.Instance.GetValue(settingToChange) == expected); + resultsHarness.AddTestResult(ActiveSliceSettings.Instance.UserLayer.ContainsKey(settingToChange) == false); } //Stress Test check & uncheck 1000x