Created test and addressed printer name bug

issue: MatterHackers/MCCentral#6102
Renaming printer when 2 are open, renames both
This commit is contained in:
LarsBrubaker 2020-10-03 17:57:53 -07:00
parent 632953866e
commit 6881e19ee6
7 changed files with 99 additions and 30 deletions

View file

@ -57,11 +57,11 @@ namespace MatterHackers.MatterControl
}
}
PrinterSettings.AnyPrinterSettingChanged += Printer_SettingChanged;
printer.Settings.SettingChanged += Printer_SettingChanged;
inlineNameEdit.Closed += (s, e) =>
{
PrinterSettings.AnyPrinterSettingChanged -= Printer_SettingChanged;
printer.Settings.SettingChanged -= Printer_SettingChanged;
};
this.AddChild(

View file

@ -672,6 +672,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public ChromeTabs TabControl => tabControl;
private static int debugPrinterTabIndex = 0;
private ChromeTab CreatePrinterTab(PartWorkspace workspace, ThemeConfig theme)
{
var printer = workspace.Printer;
@ -698,7 +700,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
theme,
tabImageUrl: ApplicationController.Instance.GetFavIconUrl(oemName: printer.Settings.GetValue(SettingsKey.make)))
{
Name = "3D View Tab",
Name = $"3D View Tab {debugPrinterTabIndex++}",
};
// add a right click menu

View file

@ -126,7 +126,10 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
var key = printer.Settings.ID;
Task.Run(async () =>
{
ProfileManager.oemSettingsNeedingUpdateCache[key] = await GetChangedOemSettings(printer);
if (ProfileManager.oemSettingsNeedingUpdateCache.ContainsKey(key))
{
ProfileManager.oemSettingsNeedingUpdateCache[key] = await GetChangedOemSettings(printer);
}
});
if (oemSettingsNeedingUpdateCache.TryGetValue(key, out List<(string key, string currentValue, string newValue)> cache))

View file

@ -45,10 +45,9 @@ namespace MatterHackers.MatterControl
{
private static HashSet<string> savedImages = new HashSet<string>();
/// <summary>
/// Download an image from the web into the specified ImageBuffer
/// </summary>
/// <param name="uri"></param>
private static object locker = new object();
// Download an image from the web into the specified ImageBuffer
public static void RetrieveImageAsync(ImageBuffer imageToLoadInto, string uriToLoad, bool scaleToImageX, IRecieveBlenderByte scalingBlender = null)
{
var longHash = uriToLoad.GetLongHashCode();
@ -97,10 +96,7 @@ namespace MatterHackers.MatterControl
}
}
/// <summary>
/// Download an image from the web into the specified ImageSequence
/// </summary>
/// <param name="uri"></param>
// Download an image from the web into the specified ImageSequence
public static void RetrieveImageSquenceAsync(ImageSequence imageSequenceToLoadInto,
string uriToLoad,
Action doneLoading = null)
@ -117,7 +113,11 @@ namespace MatterHackers.MatterControl
{
Task.Run(() =>
{
AggContext.StaticData.LoadImageSequenceData(new StreamReader(pngFileName).BaseStream, asyncImageSequence);
lock (locker)
{
AggContext.StaticData.LoadImageSequenceData(new StreamReader(pngFileName).BaseStream, asyncImageSequence);
}
UiThread.RunOnIdle(() =>
{
imageSequenceToLoadInto.Copy(asyncImageSequence);
@ -139,7 +139,11 @@ namespace MatterHackers.MatterControl
{
try
{
AggContext.StaticData.LoadImageSequenceData(new StreamReader(gifFileName).BaseStream, asyncImageSequence);
lock (locker)
{
AggContext.StaticData.LoadImageSequenceData(new StreamReader(gifFileName).BaseStream, asyncImageSequence);
}
if (asyncImageSequence.NumFrames > 0)
{
UiThread.RunOnIdle(() =>
@ -179,12 +183,18 @@ namespace MatterHackers.MatterControl
byte[] raw = e.Result;
Stream stream = new MemoryStream(raw);
AggContext.StaticData.LoadImageSequenceData(stream, asyncImageSequence);
lock (locker)
{
AggContext.StaticData.LoadImageSequenceData(stream, asyncImageSequence);
}
if (asyncImageSequence.Frames.Count == 1)
{
// save the as png
AggContext.ImageIO.SaveImageData(pngFileName, asyncImageSequence.Frames[0]);
lock (locker)
{
AggContext.ImageIO.SaveImageData(pngFileName, asyncImageSequence.Frames[0]);
}
}
else // save original stream as gif
{
@ -286,7 +296,11 @@ namespace MatterHackers.MatterControl
{
try
{
fileText = File.ReadAllText(appDataFileName);
lock (locker)
{
fileText = File.ReadAllText(appDataFileName);
}
updateResult?.Invoke(fileText);
}
catch
@ -301,7 +315,11 @@ namespace MatterHackers.MatterControl
{
try
{
fileText = AggContext.StaticData.ReadAllText(staticDataPath);
lock (locker)
{
fileText = AggContext.StaticData.ReadAllText(staticDataPath);
}
updateResult?.Invoke(fileText);
}
catch
@ -341,8 +359,11 @@ namespace MatterHackers.MatterControl
ImageBuffer unScaledImage = new ImageBuffer(10, 10);
if (scaleToImageX)
{
// scale the loaded image to the size of the target image
AggContext.StaticData.LoadImageData(stream, unScaledImage);
lock (locker)
{
// scale the loaded image to the size of the target image
AggContext.StaticData.LoadImageData(stream, unScaledImage);
}
// If the source image (the one we downloaded) is more than twice as big as our dest image.
while (unScaledImage.Width > imageToLoadInto.Width * 2)