diff --git a/MatterControlLib/ActionBar/TemperatureWidgetBed.cs b/MatterControlLib/ActionBar/TemperatureWidgetBed.cs index 17f33a94a..571ae4bff 100644 --- a/MatterControlLib/ActionBar/TemperatureWidgetBed.cs +++ b/MatterControlLib/ActionBar/TemperatureWidgetBed.cs @@ -148,7 +148,8 @@ namespace MatterHackers.MatterControl.ActionBar this.Closed += (s, e) => UiThread.ClearInterval(runningInterval); var settingsRow = temperatureRow.DescendantsAndSelf().FirstOrDefault(); - void SettingChanged(object s, EventArgs e) + + void Printer_SettingChanged(object s, EventArgs e) { if (e is StringEventArgs stringEvent) { @@ -180,8 +181,9 @@ namespace MatterHackers.MatterControl.ActionBar } } } - printer.Settings.SettingChanged += SettingChanged; - printer.Disposed -= SettingChanged; + + printer.Settings.SettingChanged += Printer_SettingChanged; + printer.Disposed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; container.AddChild(graph); diff --git a/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs b/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs index b811c6419..15d2f375a 100644 --- a/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs +++ b/MatterControlLib/ActionBar/TemperatureWidgetExtruder.cs @@ -295,7 +295,7 @@ namespace MatterHackers.MatterControl.ActionBar var settingsRow = temperatureRow.DescendantsAndSelf().FirstOrDefault(); - void SettingChanged(object s, EventArgs e) + void Printer_SettingChanged(object s, EventArgs e) { if (e is StringEventArgs stringEvent) { @@ -329,8 +329,8 @@ namespace MatterHackers.MatterControl.ActionBar } } - printer.Settings.SettingChanged += SettingChanged; - printer.Disposed -= SettingChanged; + printer.Settings.SettingChanged += Printer_SettingChanged; + printer.Disposed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; container.AddChild(graph); diff --git a/MatterControlLib/ApplicationView/ApplicationController.cs b/MatterControlLib/ApplicationView/ApplicationController.cs index a400b569d..b2921a498 100644 --- a/MatterControlLib/ApplicationView/ApplicationController.cs +++ b/MatterControlLib/ApplicationView/ApplicationController.cs @@ -1795,7 +1795,7 @@ namespace MatterHackers.MatterControl { ProfileManager.Instance.AddOpenPrinter(printerID); - var printer = new PrinterConfig(await ProfileManager.LoadProfileAsync(printerID)); + var printer = new PrinterConfig(await ProfileManager.LoadSettingsAsync(printerID)); _activePrinters.Add(printer); diff --git a/MatterControlLib/ApplicationView/PrinterConfig.cs b/MatterControlLib/ApplicationView/PrinterConfig.cs index 1be50e363..91591135f 100644 --- a/MatterControlLib/ApplicationView/PrinterConfig.cs +++ b/MatterControlLib/ApplicationView/PrinterConfig.cs @@ -108,7 +108,6 @@ namespace MatterHackers.MatterControl this.Settings.printer = this; this.Settings.SettingChanged += Printer_SettingChanged; - this.Disposed -= Printer_SettingChanged; void PrintFinished(object s, EventArgs e) { @@ -128,7 +127,12 @@ namespace MatterHackers.MatterControl } this.Connection.PrintFinished += PrintFinished; - this.Disposed += (s, e) => this.Connection.PrintFinished -= PrintFinished; + this.Disposed += (s, e) => + { + // Unregister listeners + this.Connection.PrintFinished -= PrintFinished; + this.Settings.SettingChanged -= Printer_SettingChanged; + }; if (!string.IsNullOrEmpty(this.Settings.GetValue(SettingsKey.baud_rate))) { @@ -482,8 +486,10 @@ namespace MatterHackers.MatterControl public void Dispose() { replaceWithSettingsStrings = null; - Connection.Dispose(); - Disposed?.Invoke(this, null); + + this.Connection.Dispose(); + this.Disposed?.Invoke(this, null); + this.Disposed = null; } } } \ No newline at end of file diff --git a/MatterControlLib/Library/Providers/LibraryConfig.cs b/MatterControlLib/Library/Providers/LibraryConfig.cs index b5a172034..e91795338 100644 --- a/MatterControlLib/Library/Providers/LibraryConfig.cs +++ b/MatterControlLib/Library/Providers/LibraryConfig.cs @@ -268,7 +268,7 @@ namespace MatterHackers.MatterControl.Library // Use the listview defaults if (thumbHeight < 24 && thumbWidth < 24) { - thumbnail = ((libraryItem is ILibraryContainerLink) ? defaultFolderIconx20 : defaultItemIconx20); ; + thumbnail = ((libraryItem is ILibraryContainerLink) ? defaultFolderIconx20 : defaultItemIconx20); //if (!theme.InvertIcons) //{ diff --git a/MatterControlLib/Library/Widgets/HardwareTreeView.cs b/MatterControlLib/Library/Widgets/HardwareTreeView.cs index 4ecb12ee8..ef79f849e 100644 --- a/MatterControlLib/Library/Widgets/HardwareTreeView.cs +++ b/MatterControlLib/Library/Widgets/HardwareTreeView.cs @@ -161,7 +161,7 @@ namespace MatterHackers.MatterControl.PrintLibrary } PrinterSettings.AnyPrinterSettingChanged += AnyPrinterSettingChanged; - this.Closed -= AnyPrinterSettingChanged; + this.Closed += (s, e) => PrinterSettings.AnyPrinterSettingChanged -= AnyPrinterSettingChanged; // Rebuild the treeview anytime the Profiles list changes ProfileManager.ProfilesListChanged.RegisterEvent((s, e) => diff --git a/MatterControlLib/PartPreviewWindow/GCode2DWidget.cs b/MatterControlLib/PartPreviewWindow/GCode2DWidget.cs index a6f99e3b3..89e9d9cfd 100644 --- a/MatterControlLib/PartPreviewWindow/GCode2DWidget.cs +++ b/MatterControlLib/PartPreviewWindow/GCode2DWidget.cs @@ -78,7 +78,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow // make sure we have good settings printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; + Printer_SettingChanged(this, null); this.gridSizeMm = printer.Settings.GetValue(SettingsKey.bed_size); diff --git a/MatterControlLib/PartPreviewWindow/GCode3DWidget.cs b/MatterControlLib/PartPreviewWindow/GCode3DWidget.cs index c3dd5bee1..a74096b3b 100644 --- a/MatterControlLib/PartPreviewWindow/GCode3DWidget.cs +++ b/MatterControlLib/PartPreviewWindow/GCode3DWidget.cs @@ -107,7 +107,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; printer.Bed.LoadedGCodeChanged += Bed_LoadedGCodeChanged; printer.Bed.RendererOptions.PropertyChanged += RendererOptions_PropertyChanged; diff --git a/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDetailsView.cs b/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDetailsView.cs index 4e327844c..d1ad46fa6 100644 --- a/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDetailsView.cs +++ b/MatterControlLib/PartPreviewWindow/GCodeDetails/GCodeDetailsView.cs @@ -83,7 +83,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; } TextWidget AddSetting(string title, string value) diff --git a/MatterControlLib/PartPreviewWindow/MainViewWidget.cs b/MatterControlLib/PartPreviewWindow/MainViewWidget.cs index 7f2bb145e..197a2c0aa 100644 --- a/MatterControlLib/PartPreviewWindow/MainViewWidget.cs +++ b/MatterControlLib/PartPreviewWindow/MainViewWidget.cs @@ -404,7 +404,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; ApplicationController.Instance.OpenPrintersChanged += OpenPrinters_Changed; @@ -583,7 +583,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; // Add printer into fixed position if (tabControl.AllTabs.Any()) diff --git a/MatterControlLib/PartPreviewWindow/PopupButton.cs b/MatterControlLib/PartPreviewWindow/PopupButton.cs index 42c93736f..3d0486e09 100644 --- a/MatterControlLib/PartPreviewWindow/PopupButton.cs +++ b/MatterControlLib/PartPreviewWindow/PopupButton.cs @@ -95,6 +95,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow base.OnClick(mouseEvent); } + public override void OnClosed(EventArgs e) + { + this.PopupContent?.Close(); + base.OnClosed(e); + } + public void ShowPopup() { if (PopupLayoutEngine == null) diff --git a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs index 80651562a..1030dc6d5 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PauseResumeButton.cs @@ -101,7 +101,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; SetButtonStates(); } diff --git a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs index 7e193b0ef..4a0f33f40 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/PrinterBar/PrintPopupMenu.cs @@ -203,7 +203,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; } public override void OnClosed(EventArgs e) diff --git a/MatterControlLib/PrinterCommunication/Io/BabyStepsStream.cs b/MatterControlLib/PrinterCommunication/Io/BabyStepsStream.cs index c49c22211..1b7b4d439 100644 --- a/MatterControlLib/PrinterCommunication/Io/BabyStepsStream.cs +++ b/MatterControlLib/PrinterCommunication/Io/BabyStepsStream.cs @@ -52,8 +52,9 @@ namespace MatterHackers.MatterControl.PrinterCommunication.Io OffsetChanged(); } } + printer.Settings.SettingChanged += Printer_SettingChanged; - printer.Disposed -= Printer_SettingChanged; + printer.Disposed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; maxLengthStream = new MaxLengthStream(printer, internalStream, startingMaxLength); offsetStream = new OffsetStream(maxLengthStream, printer, new Vector3(0, 0, printer.Settings.GetValue(SettingsKey.baby_step_z_offset))); diff --git a/MatterControlLib/PrinterControls/ControlWidgets/AdjustmentControls.cs b/MatterControlLib/PrinterControls/ControlWidgets/AdjustmentControls.cs index ae0c16bb7..f600c3e2e 100644 --- a/MatterControlLib/PrinterControls/ControlWidgets/AdjustmentControls.cs +++ b/MatterControlLib/PrinterControls/ControlWidgets/AdjustmentControls.cs @@ -195,7 +195,7 @@ namespace MatterHackers.MatterControl.PrinterControls } } printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; } diff --git a/MatterControlLib/PrinterControls/ControlWidgets/MovementControls.cs b/MatterControlLib/PrinterControls/ControlWidgets/MovementControls.cs index 718eef2d5..3d31472e4 100644 --- a/MatterControlLib/PrinterControls/ControlWidgets/MovementControls.cs +++ b/MatterControlLib/PrinterControls/ControlWidgets/MovementControls.cs @@ -271,8 +271,7 @@ namespace MatterHackers.MatterControl.PrinterControls } } printerSettings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; - + this.Closed += (s, e) => printerSettings.SettingChanged -= Printer_SettingChanged; zOffsetStreamContainer = new FlowLayoutWidget(FlowDirection.LeftToRight) { diff --git a/MatterControlLib/PrinterControls/JogControls.cs b/MatterControlLib/PrinterControls/JogControls.cs index 2dd1d4dc0..0ba92ec3c 100644 --- a/MatterControlLib/PrinterControls/JogControls.cs +++ b/MatterControlLib/PrinterControls/JogControls.cs @@ -209,7 +209,7 @@ namespace MatterHackers.MatterControl this.PerformLayout(); printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; } internal void SetEnabledLevels(bool enableBabysteppingMode, bool enableEControls) diff --git a/MatterControlLib/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs b/MatterControlLib/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs index de3ebe3da..c0dc79297 100644 --- a/MatterControlLib/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs +++ b/MatterControlLib/PrinterControls/PrinterConnections/SetupStepMakeModelName.cs @@ -173,7 +173,7 @@ namespace MatterHackers.MatterControl.PrinterControls.PrinterConnections bool controlsValid = this.ValidateControls(); if (controlsValid) { - var printer = await ProfileManager.CreateProfileAsync(activeMake, activeModel, activeName); + var printer = await ProfileManager.CreatePrinterAsync(activeMake, activeModel, activeName); if (printer == null) { this.printerNameError.Text = "Error creating profile".Localize(); diff --git a/MatterControlLib/SettingsManagement/OemSettings.cs b/MatterControlLib/SettingsManagement/OemSettings.cs index f0c26df22..b1f1789fe 100644 --- a/MatterControlLib/SettingsManagement/OemSettings.cs +++ b/MatterControlLib/SettingsManagement/OemSettings.cs @@ -246,7 +246,7 @@ namespace MatterHackers.MatterControl.SettingsManagement if (!File.Exists(cachePath)) { await Task.Delay(20000); - await ProfileManager.LoadOemProfileAsync(publicDevice, oem, model); + await ProfileManager.LoadOemSettingsAsync(publicDevice, oem, model); if (ApplicationController.Instance.ApplicationExiting) { diff --git a/MatterControlLib/SetupWizard/Printer/SelectPrinterProfilePage.cs b/MatterControlLib/SetupWizard/Printer/SelectPrinterProfilePage.cs index 751f4501f..6afbbbda2 100644 --- a/MatterControlLib/SetupWizard/Printer/SelectPrinterProfilePage.cs +++ b/MatterControlLib/SetupWizard/Printer/SelectPrinterProfilePage.cs @@ -74,7 +74,7 @@ namespace MatterHackers.MatterControl { if (treeNode.Tag is PrinterInfo printerInfo) { - ProfileManager.LoadProfileAsync(printerInfo.ID).ContinueWith(task => + ProfileManager.LoadSettingsAsync(printerInfo.ID).ContinueWith(task => { var settings = task.Result; printerLoaded?.Invoke(new PrinterConfig(settings)); diff --git a/MatterControlLib/SlicerConfiguration/PresetSelectorWidget.cs b/MatterControlLib/SlicerConfiguration/PresetSelectorWidget.cs index 62a954a7a..dea5f8275 100644 --- a/MatterControlLib/SlicerConfiguration/PresetSelectorWidget.cs +++ b/MatterControlLib/SlicerConfiguration/PresetSelectorWidget.cs @@ -84,6 +84,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration this.AddChild(pullDownContainer); printer.Settings.MaterialPresetChanged += ActiveSliceSettings_MaterialPresetChanged; + void Printer_SettingChanged(object s, EventArgs e) { if (e is StringEventArgs stringEvent @@ -93,8 +94,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration RebuildDropDownList(); } } + printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; } public FlowLayoutWidget GetPulldownContainer() diff --git a/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs b/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs index 73bcb20f6..3cf8905ae 100644 --- a/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs +++ b/MatterControlLib/SlicerConfiguration/Settings/ProfileManager.cs @@ -30,14 +30,12 @@ either expressed or implied, of the FreeBSD Project. using System; using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Diagnostics; using System.IO; using System.Linq; using System.Threading.Tasks; using MatterHackers.Agg; using MatterHackers.Agg.UI; using MatterHackers.MatterControl.DataStorage; -using MatterHackers.MatterControl.Library; using MatterHackers.MatterControl.SettingsManagement; using Newtonsoft.Json; @@ -267,7 +265,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } catch { - } } @@ -280,7 +277,6 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } catch { - } } @@ -302,7 +298,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return Path.Combine(UserProfilesDirectory, printer.ID + ProfileExtension); } - public PrinterSettings LoadWithoutRecovery(string profileID) + public PrinterSettings LoadSettingsWithoutRecovery(string profileID) { var printerInfo = Instance[profileID]; @@ -325,28 +321,28 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } /// - /// Loads the specified PrinterProfile, performing recovery options if required + /// Loads the specified printer settings, performing recovery options if required /// - /// The profile ID to load + /// The printer ID to load /// Return the in memory instance if already loaded. Alternatively, reload from disk /// - public static async Task LoadProfileAsync(string profileID, bool useActiveInstance = true) + public static async Task LoadSettingsAsync(string printerID, bool useActiveInstance = true) { // Check loaded printers for printerID and return if found - if (ApplicationController.Instance.ActivePrinters.FirstOrDefault(p => p.Settings.ID == profileID) is PrinterConfig activePrinter) + if (ApplicationController.Instance.ActivePrinters.FirstOrDefault(p => p.Settings.ID == printerID) is PrinterConfig activePrinter) { return activePrinter.Settings; } // Only load profiles by ID that are defined in the profiles document - var printerInfo = Instance[profileID]; + var printerInfo = Instance[printerID]; if (printerInfo == null) { return null; } // Attempt to load from disk, pull from the web or fall back using recovery logic - PrinterSettings printerSettings = Instance.LoadWithoutRecovery(profileID); + PrinterSettings printerSettings = Instance.LoadSettingsWithoutRecovery(printerID); if (printerSettings != null) { // Make sure we have the name set @@ -478,7 +474,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return importSuccessful; } - internal static async Task CreateProfileAsync(string make, string model, string printerName) + internal static async Task CreatePrinterAsync(string make, string model, string printerName) { string guid = Guid.NewGuid().ToString(); @@ -488,7 +484,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return null; } - var printerSettings = await LoadOemProfileAsync(publicDevice, make, model); + var printerSettings = await LoadOemSettingsAsync(publicDevice, make, model); if (printerSettings == null) { return null; @@ -515,33 +511,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration return await ApplicationController.Instance.OpenPrinter(guid); } - public static List ThemeIndexNameMapping = new List() - { - "Blue - Dark", - "Teal - Dark", - "Green - Dark", - "Light Blue - Dark", - "Orange - Dark", - "Purple - Dark", - "Red - Dark", - "Pink - Dark", - "Grey - Dark", - "Pink - Dark", - - //Light themes - "Blue - Light", - "Teal - Light", - "Green - Light", - "Light Blue - Light", - "Orange - Light", - "Purple - Light", - "Red - Light", - "Pink - Light", - "Grey - Light", - "Pink - Light", - }; - - public async static Task LoadOemProfileAsync(PublicDevice publicDevice, string make, string model) + public async static Task LoadOemSettingsAsync(PublicDevice publicDevice, string make, string model) { string cacheScope = Path.Combine("public-profiles", make); string cachePath = ApplicationController.CacheablePath(cacheScope, publicDevice.CacheKey); diff --git a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs index 9a5f6c20f..d4d8df8d6 100644 --- a/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs +++ b/MatterControlLib/SlicerConfiguration/SliceSettingsWidget.cs @@ -337,8 +337,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } } + printer.Settings.SettingChanged += Printer_SettingChanged; - this.Closed -= Printer_SettingChanged; + this.Closed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; } this.PerformLayout(); diff --git a/MatterControlLib/SlicerConfiguration/UIFields/DropMenuWrappedField.cs b/MatterControlLib/SlicerConfiguration/UIFields/DropMenuWrappedField.cs index 226002f88..8581f30d2 100644 --- a/MatterControlLib/SlicerConfiguration/UIFields/DropMenuWrappedField.cs +++ b/MatterControlLib/SlicerConfiguration/UIFields/DropMenuWrappedField.cs @@ -118,8 +118,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } } + printer.Settings.SettingChanged += Printer_SettingChanged; - printer.Disposed -= Printer_SettingChanged; + printer.Disposed += (s, e) => printer.Settings.SettingChanged -= Printer_SettingChanged; this.Content = totalContent; }