Fixing materials open dialog

This commit is contained in:
Lars Brubaker 2022-03-24 10:28:37 -07:00
parent fc64b45978
commit 3f4d5aac6f
3 changed files with 29 additions and 30 deletions

View file

@ -85,10 +85,11 @@ namespace MatterHackers.MatterControl.Library
{
var name = bedConfig.Printer.PrinterName;
var mcxPath = "";
var startTime = UiThread.CurrentTimerMs;
var tries = 0;
// try to get a valid filename for up to 3 seconds (3 tries at an unused filename)
while (File.Exists(mcxPath)
&& UiThread.CurrentTimerMs < startTime + 3000)
while (string.IsNullOrEmpty(mcxPath)
|| (File.Exists(mcxPath)
&& tries < 20))
{
string now = DateTime.Now.ToString("yyyy-MM-dd HH_mm_ss");
var filename = ApplicationController.Instance.SanitizeFileName($"{name} - {now}.mcx");

View file

@ -349,31 +349,35 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
Action = () =>
{
AggContext.FileDialogs.OpenFileDialog(
new OpenFileDialogParams("settings files|*.printer,*.material"),
new OpenFileDialogParams("settings files|*.printer;*.material"),
(dialogParams) =>
{
// if there is only a single materials setting load it directly
var settingsToImport = PrinterSettings.LoadFile(dialogParams.FileName);
if (Path.GetExtension(dialogParams.FileName).ToLower() == ".material"
&& settingsToImport.MaterialLayers.Count == 1)
if (!string.IsNullOrEmpty(dialogParams.FileName))
{
var printerSettingsLayer = new PrinterSettingsLayer();
var sourceFilter = new List<PrinterSettingsLayer>()
// if there is only a single materials setting load it directly
var settingsToImport = PrinterSettings.LoadFile(dialogParams.FileName);
if (Path.GetExtension(dialogParams.FileName).ToLower() == ".material"
&& settingsToImport.MaterialLayers.Count == 1)
{
settingsToImport.MaterialLayers[0]
};
printer.Settings.Merge(printerSettingsLayer, settingsToImport, sourceFilter, true);
printer.Settings.MaterialLayers.Add(printerSettingsLayer);
var newMaterial = printer.Settings.MaterialLayers[printer.Settings.MaterialLayers.Count - 1];
printer.Settings.SetValue(SettingsKey.active_material_key, newMaterial.LayerID);
var printerSettingsLayer = new PrinterSettingsLayer();
var sourceFilter = new List<PrinterSettingsLayer>()
{
settingsToImport.MaterialLayers[0]
};
printer.Settings.Merge(printerSettingsLayer, settingsToImport, sourceFilter, true);
printer.Settings.MaterialLayers.Add(printerSettingsLayer);
var newMaterial = printer.Settings.MaterialLayers[printer.Settings.MaterialLayers.Count - 1];
printer.Settings.SetValue(SettingsKey.active_material_key, newMaterial.LayerID);
}
else
{
// else open a dialog to select what setting to improt
if (!string.IsNullOrEmpty(dialogParams.FileName))
}
else
{
DialogWindow.Show(new ImportSettingsPage(dialogParams.FileName, printer));
// else open a dialog to select what setting to import
if (!string.IsNullOrEmpty(dialogParams.FileName))
{
DialogWindow.Show(new ImportSettingsPage(dialogParams.FileName, printer));
}
}
}
});

View file

@ -334,6 +334,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
Padding = new BorderDouble(0, 7),
};
#if false
// buttons for the control of defaults
var topButtonData = new (string, string)[]
{
@ -342,14 +343,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
(nameof(Hide_All), "Hide All".Localize()),
};
#if false
var startingValue = operationGroup.Collapse ? nameof(Collapsed) : nameof(Expanded);
if (!operationGroup.Visible)
{
startingValue = nameof(Hidden);
}
popupMenu.CreateButtonSelectMenuItem(operationGroup.Title, buttonData, startingValue, (value) =>
popupMenu.CreateButtonSelectMenuItem("Group Setings".Localize(), topButtonData, nameof(Default), (value) =>
{
switch (value)
{