Merge pull request #3997 from jlewin/master

Unregister listeners
This commit is contained in:
johnlewin 2018-11-16 05:33:36 -08:00 committed by GitHub
commit 9566d7f366
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 60 additions and 71 deletions

View file

@ -148,7 +148,8 @@ namespace MatterHackers.MatterControl.ActionBar
this.Closed += (s, e) => UiThread.ClearInterval(runningInterval);
var settingsRow = temperatureRow.DescendantsAndSelf<SliceSettingsRow>().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);

View file

@ -295,7 +295,7 @@ namespace MatterHackers.MatterControl.ActionBar
var settingsRow = temperatureRow.DescendantsAndSelf<SliceSettingsRow>().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);

View file

@ -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);

View file

@ -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;
}
}
}

View file

@ -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)
//{

View file

@ -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) =>

View file

@ -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<Vector2>(SettingsKey.bed_size);

View file

@ -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;

View file

@ -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)

View file

@ -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())

View file

@ -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)

View file

@ -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();
}

View file

@ -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)

View file

@ -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<double>(SettingsKey.baby_step_z_offset)));

View file

@ -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;
}

View file

@ -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)
{

View file

@ -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)

View file

@ -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();

View file

@ -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)
{

View file

@ -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));

View file

@ -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()

View file

@ -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
}
/// <summary>
/// Loads the specified PrinterProfile, performing recovery options if required
/// Loads the specified printer settings, performing recovery options if required
/// </summary>
/// <param name="profileID">The profile ID to load</param>
/// <param name="printerID">The printer ID to load</param>
/// <param name="useActiveInstance">Return the in memory instance if already loaded. Alternatively, reload from disk</param>
/// <returns></returns>
public static async Task<PrinterSettings> LoadProfileAsync(string profileID, bool useActiveInstance = true)
public static async Task<PrinterSettings> 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<PrinterConfig> CreateProfileAsync(string make, string model, string printerName)
internal static async Task<PrinterConfig> 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<string> ThemeIndexNameMapping = new List<string>()
{
"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<PrinterSettings> LoadOemProfileAsync(PublicDevice publicDevice, string make, string model)
public async static Task<PrinterSettings> LoadOemSettingsAsync(PublicDevice publicDevice, string make, string model)
{
string cacheScope = Path.Combine("public-profiles", make);
string cachePath = ApplicationController.CacheablePath(cacheScope, publicDevice.CacheKey);

View file

@ -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();

View file

@ -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;
}