diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index f3effc385..62d17bde9 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -387,6 +387,8 @@ namespace MatterHackers.MatterControl public event EventHandler WorkspacesChanged; + public event EventHandler ReloadSettingsTriggered; + public void ReloadSettings(PrinterConfig printer) { var printerTabPage = this.MainView.Descendants().Where(page => page.Printer == printer).FirstOrDefault(); @@ -415,6 +417,8 @@ namespace MatterHackers.MatterControl sideBar.ReplacePage("Slice Settings", new SliceSettingsWidget(printer, settingsContext, Theme)); ApplicationController.Instance.IsReloading = false; } + + ReloadSettingsTriggered?.Invoke(null, null); } public static Action WebRequestFailed; diff --git a/MatterControlLib/DesignTools/Operations/PartSettingsObject3D.cs b/MatterControlLib/DesignTools/Operations/PartSettingsObject3D.cs index 267c83fab..4c2d22bd4 100644 --- a/MatterControlLib/DesignTools/Operations/PartSettingsObject3D.cs +++ b/MatterControlLib/DesignTools/Operations/PartSettingsObject3D.cs @@ -92,8 +92,79 @@ namespace MatterHackers.MatterControl.DesignTools.Operations public string ThumbnailName => nameof(PartSettingsObject3D); + private void UpdateSettingsDisplay(PrinterConfig containingPrinter) + { + if (containingPrinter != null) + { + this.Invalidate(InvalidateType.DisplayValues); + ApplicationController.Instance.ReloadSettings(containingPrinter); + // refresh the properties pannel by unselecting and selecting + containingPrinter.Bed.Scene.SelectedItem = null; + containingPrinter.Bed.Scene.SelectedItem = this; + } + } + + public static HashSet settingsToIgnore = new HashSet() + { + SettingsKey.spiral_vase, + SettingsKey.layer_to_pause, + SettingsKey.perimeter_acceleration, + SettingsKey.default_acceleration, + SettingsKey.t1_extrusion_move_speed_multiplier, + SettingsKey.bed_surface, + SettingsKey.brim_extruder, + SettingsKey.support_material_extruder, + SettingsKey.support_material_interface_extruder, + SettingsKey.material_color, + SettingsKey.material_color_1, + SettingsKey.material_color_2, + SettingsKey.material_color_3, + SettingsKey.filament_diameter, + SettingsKey.filament_density, + SettingsKey.filament_cost, + SettingsKey.temperature, + SettingsKey.temperature1, + SettingsKey.temperature2, + SettingsKey.temperature3, + SettingsKey.bed_temperature, + SettingsKey.bed_temperature_blue_tape, + SettingsKey.bed_temperature_buildtak, + SettingsKey.bed_temperature_garolite, + SettingsKey.bed_temperature_glass, + SettingsKey.bed_temperature_kapton, + SettingsKey.bed_temperature_pei, + SettingsKey.bed_temperature_pp, + SettingsKey.inactive_cool_down, + SettingsKey.seconds_to_reheat, + }; + public IEnumerable GetEditorButtonsData() { + var containingPrinter = this.ContainingPrinter(); + if (containingPrinter != null) + { + yield return new EditorButtonData() + { + Action = () => + { + var settingsContext = new SettingsContext(containingPrinter, null, NamedSettingsLayers.All); + foreach (var setting in containingPrinter.Settings.UserLayer) + { + var data = SliceSettingsRow.GetStyleData(containingPrinter, ApplicationController.Instance.Theme, settingsContext, setting.Key, true); + + if (!settingsToIgnore.Contains(setting.Key) && data.showRestoreButton) + { + Overrides[setting.Key] = setting.Value; + } + } + UpdateSettingsDisplay(containingPrinter); + }, + Name = "Add User Overrides".Localize(), + HelpText = "Copy in all current user overides".Localize() + }; + } + + if (ApplicationController.Instance.UserHasPermission(this)) { yield return new EditorButtonData() @@ -101,6 +172,8 @@ namespace MatterHackers.MatterControl.DesignTools.Operations Action = () => { var settings = new PrinterSettings(); + // set this after the PrinterConfig is constructed to change it to overrides + settings.GetSceneLayer = () => Overrides; var printer = new PrinterConfig(settings); // set this after the PrinterConfig is constructed to change it to overrides settings.GetSceneLayer = () => Overrides; @@ -114,15 +187,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations editMaterialPresetsPage.Closed += (s, e2) => { ApplicationController.Instance.AcitveSlicePresetsPage = null; - var containingPrinter = this.ContainingPrinter(); - if (containingPrinter != null) - { - this.Invalidate(InvalidateType.DisplayValues); - ApplicationController.Instance.ReloadSettings(containingPrinter); - // refresh the properties pannel by unselecting and selecting - containingPrinter.Bed.Scene.SelectedItem = null; - containingPrinter.Bed.Scene.SelectedItem = this; - } + UpdateSettingsDisplay(containingPrinter); }; ApplicationController.Instance.AcitveSlicePresetsPage = editMaterialPresetsPage; diff --git a/MatterControlLib/SlicerConfiguration/SlicePresetsWindow/SlicePresetsPage.cs b/MatterControlLib/SlicerConfiguration/SlicePresetsWindow/SlicePresetsPage.cs index 3ed0ee090..3065faadc 100644 --- a/MatterControlLib/SlicerConfiguration/SlicePresetsWindow/SlicePresetsPage.cs +++ b/MatterControlLib/SlicerConfiguration/SlicePresetsWindow/SlicePresetsPage.cs @@ -68,6 +68,19 @@ namespace MatterHackers.MatterControl.SlicerConfiguration var sliceSettingsWidget = CreateSliceSettingsWidget(printer, presetsContext.PersistenceLayer); contentRow.AddChild(sliceSettingsWidget); + void ReloadSettings(object s, EventArgs e) + { + var newSliceSettingsWidget = CreateSliceSettingsWidget(printer, presetsContext.PersistenceLayer); + contentRow.ReplaceChild(sliceSettingsWidget, newSliceSettingsWidget); + contentRow.Width += 1; + contentRow.Width -= 1; + sliceSettingsWidget = newSliceSettingsWidget; + } + + ApplicationController.Instance.ReloadSettingsTriggered += ReloadSettings; + + this.Closed += (s, e) => ApplicationController.Instance.ReloadSettingsTriggered -= ReloadSettings; + GuiWidget duplicateButton = null; if (presetsContext.SetAsActive != null) diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt index 51920b676..ee244daed 100644 --- a/StaticData/Translations/Master.txt +++ b/StaticData/Translations/Master.txt @@ -247,6 +247,9 @@ Translated:Add to Queue English:Add to Selection Translated:Add to Selection +English:Add User Overrides +Translated:Add User Overrides + English:Additional Printing Errors Translated:Additional Printing Errors @@ -1042,6 +1045,9 @@ Translated:Copy everything but hardware specific calibration settings English:Copy extrusions data Translated:Copy extrusions data +English:Copy in all current user overides +Translated:Copy in all current user overides + English:Copy Mesh Translated:Copy Mesh diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 7ea2bbbf3..303fb1cf3 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 7ea2bbbf3634ab37698640cc184ac2d2755cffbe +Subproject commit 303fb1cf3baada642aaa46eb4d2e9fd546045bf7