From cf1ec25f9eaecbfc10f873900075f24ca7d3345a Mon Sep 17 00:00:00 2001 From: John Lewin Date: Sun, 17 Jun 2018 12:22:33 -0700 Subject: [PATCH] Migrate SlicePresetsWindow to DialogPage - Issue MatterHackers/MCCentral#3639 Use DialogPage for consistent styling and behavior --- ApplicationView/ApplicationController.cs | 4 +- SetupWizard/DialogPage.cs | 2 +- SlicerConfiguration/PresetSelectorWidget.cs | 24 ++-- .../SlicePresetsWindow/SlicePresetsWindow.cs | 134 +++++++----------- 4 files changed, 69 insertions(+), 95 deletions(-) diff --git a/ApplicationView/ApplicationController.cs b/ApplicationView/ApplicationController.cs index 4fa0e6b25..abf66b5a0 100644 --- a/ApplicationView/ApplicationController.cs +++ b/ApplicationView/ApplicationController.cs @@ -347,9 +347,9 @@ namespace MatterHackers.MatterControl public static Func> GetPublicProfileList; public static Func> DownloadPublicProfileAsync; - public SlicePresetsWindow EditMaterialPresetsWindow { get; set; } + public SlicePresetsPage EditMaterialPresetsPage { get; set; } - public SlicePresetsWindow EditQualityPresetsWindow { get; set; } + public SlicePresetsPage EditQualityPresetsWindow { get; set; } public GuiWidget MainView; diff --git a/SetupWizard/DialogPage.cs b/SetupWizard/DialogPage.cs index b8f74234d..4aa1820ce 100644 --- a/SetupWizard/DialogPage.cs +++ b/SetupWizard/DialogPage.cs @@ -41,7 +41,7 @@ namespace MatterHackers.MatterControl { protected FlowLayoutWidget headerRow; protected FlowLayoutWidget contentRow; - private FlowLayoutWidget footerRow; + protected FlowLayoutWidget footerRow; private WrappedTextWidget headerLabel; private GuiWidget cancelButton; diff --git a/SlicerConfiguration/PresetSelectorWidget.cs b/SlicerConfiguration/PresetSelectorWidget.cs index aa5a6a80b..56ebee953 100644 --- a/SlicerConfiguration/PresetSelectorWidget.cs +++ b/SlicerConfiguration/PresetSelectorWidget.cs @@ -116,7 +116,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { if (layerType == NamedSettingsLayers.Material) { - if (ApplicationController.Instance.EditMaterialPresetsWindow == null) + if (ApplicationController.Instance.EditMaterialPresetsPage == null) { string presetsID = printer.Settings.ActiveMaterialKey; if (string.IsNullOrEmpty(presetsID)) @@ -150,16 +150,18 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } }; - ApplicationController.Instance.EditMaterialPresetsWindow = new SlicePresetsWindow(printer, presetsContext); - ApplicationController.Instance.EditMaterialPresetsWindow.Closed += (s, e2) => + var editMaterialPresetsPage = new SlicePresetsPage(printer, presetsContext); + editMaterialPresetsPage.Closed += (s, e2) => { - ApplicationController.Instance.EditMaterialPresetsWindow = null; + ApplicationController.Instance.EditMaterialPresetsPage = null; }; - ApplicationController.Instance.EditMaterialPresetsWindow.ShowAsSystemWindow(); + + ApplicationController.Instance.EditMaterialPresetsPage = editMaterialPresetsPage; + DialogWindow.Show(editMaterialPresetsPage); } else { - ApplicationController.Instance.EditMaterialPresetsWindow.BringToFront(); + ApplicationController.Instance.EditMaterialPresetsPage.WizardWindow.BringToFront(); } } @@ -187,16 +189,18 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } }; - ApplicationController.Instance.EditQualityPresetsWindow = new SlicePresetsWindow(printer, presetsContext); - ApplicationController.Instance.EditQualityPresetsWindow.Closed += (s, e2) => + var editQualityPresetsWindow = new SlicePresetsPage(printer, presetsContext); + editQualityPresetsWindow.Closed += (s, e2) => { ApplicationController.Instance.EditQualityPresetsWindow = null; }; - ApplicationController.Instance.EditQualityPresetsWindow.ShowAsSystemWindow(); + + ApplicationController.Instance.EditQualityPresetsWindow = editQualityPresetsWindow; + DialogWindow.Show(editQualityPresetsWindow); } else { - ApplicationController.Instance.EditQualityPresetsWindow.BringToFront(); + ApplicationController.Instance.EditQualityPresetsWindow.WizardWindow.BringToFront(); } } }; diff --git a/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs b/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs index 39b0a4456..9f0d2c98a 100644 --- a/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs +++ b/SlicerConfiguration/SlicePresetsWindow/SlicePresetsWindow.cs @@ -59,58 +59,72 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } } - public class SlicePresetsWindow : SystemWindow + public class SlicePresetsPage : DialogPage { private static Regex numberMatch = new Regex("\\s*\\(\\d+\\)", RegexOptions.Compiled); private PresetsContext presetsContext; private PrinterConfig printer; - private GuiWidget middleRow; - private InlineTitleEdit inlineTitleEdit; - public SlicePresetsWindow(PrinterConfig printer, PresetsContext presetsContext) - : base(641, 481) + public SlicePresetsPage(PrinterConfig printer, PresetsContext presetsContext) { - var theme = ApplicationController.Instance.Theme; this.presetsContext = presetsContext; this.printer = printer; this.AlwaysOnTopOfMain = true; - this.Title = "Slice Presets Editor".Localize(); - this.MinimumSize = new Vector2(640, 480); + + this.WindowTitle = "Slice Presets Editor".Localize(); + this.WindowSize = new Vector2(640, 480); this.AnchorAll(); - var linkButtonFactory = new LinkButtonFactory() - { - fontSize = 8, - textColor = ActiveTheme.Instance.PrimaryAccentColor - }; + this.headerRow.Visible = false; + this.contentRow.Padding = 0; - var buttonFactory = theme.ButtonFactory; + contentRow.BackgroundColor = Color.Transparent; - FlowLayoutWidget mainContainer = new FlowLayoutWidget(FlowDirection.TopToBottom) - { - Padding = new BorderDouble(3) - }; - mainContainer.AnchorAll(); - - middleRow = new GuiWidget(); - middleRow.AnchorAll(); - middleRow.AddChild(CreateSliceSettingsWidget(printer, presetsContext.PersistenceLayer)); - - inlineTitleEdit = new InlineTitleEdit(presetsContext.PersistenceLayer.Name, theme, presetsContext.LayerType.ToString() + " Name", boldFont: true); + var inlineTitleEdit = new InlineTitleEdit(presetsContext.PersistenceLayer.Name, theme, presetsContext.LayerType.ToString() + " Name", boldFont: true); inlineTitleEdit.TitleChanged += (s, e) => { printer.Settings.SetValue(SettingsKey.layer_name, inlineTitleEdit.Text, presetsContext.PersistenceLayer); - //ActiveSliceSettings.SettingChanged.CallEvents(null, new StringEventArgs(SettingsKey.layer_name)); }; - mainContainer.AddChild(inlineTitleEdit); + contentRow.AddChild(inlineTitleEdit); - mainContainer.AddChild(middleRow); - mainContainer.AddChild(GetBottomRow(buttonFactory)); + var sliceSettingsWidget = CreateSliceSettingsWidget(printer, presetsContext.PersistenceLayer); + contentRow.AddChild(sliceSettingsWidget); - this.AddChild(mainContainer); + var duplicateButton = theme.CreateDialogButton("Duplicate".Localize()); + duplicateButton.Click += (s, e) => + { + UiThread.RunOnIdle(() => + { + string sanitizedName = numberMatch.Replace(inlineTitleEdit.Text, "").Trim(); + string newProfileName = agg_basics.GetNonCollidingName(sanitizedName, presetsContext.PresetLayers.Select(preset => preset.ValueOrDefault(SettingsKey.layer_name))); - BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor; + var clonedLayer = presetsContext.PersistenceLayer.Clone(); + clonedLayer.Name = newProfileName; + presetsContext.PresetLayers.Add(clonedLayer); + + presetsContext.SetAsActive(clonedLayer.LayerID); + presetsContext.PersistenceLayer = clonedLayer; + + sliceSettingsWidget.Close(); + sliceSettingsWidget = CreateSliceSettingsWidget(printer, clonedLayer); + contentRow.AddChild(sliceSettingsWidget); + + inlineTitleEdit.Text = newProfileName; + }); + }; + this.AddPageAction(duplicateButton); + + var deleteButton = theme.CreateDialogButton("Delete".Localize()); + deleteButton.Click += (s, e) => + { + UiThread.RunOnIdle(() => + { + presetsContext.DeleteLayer(); + this.WizardWindow.Close(); + }); + }; + this.AddPageAction(deleteButton); } private GuiWidget CreateSliceSettingsWidget(PrinterConfig printer, PrinterSettingsLayer persistenceLayer) @@ -131,58 +145,14 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; } - private FlowLayoutWidget GetBottomRow(TextImageButtonFactory buttonFactory) + public override void OnLoad(EventArgs args) { - var container = new FlowLayoutWidget() - { - HAnchor = HAnchor.Stretch, - Margin = new BorderDouble(top: 3) - }; - - Button duplicateButton = buttonFactory.Generate("Duplicate".Localize()); - duplicateButton.Click += (s, e) => - { - UiThread.RunOnIdle(() => - { - string sanitizedName = numberMatch.Replace(inlineTitleEdit.Text, "").Trim(); - string newProfileName = agg_basics.GetNonCollidingName(sanitizedName, presetsContext.PresetLayers.Select(preset => preset.ValueOrDefault(SettingsKey.layer_name))); - - var clonedLayer = presetsContext.PersistenceLayer.Clone(); - clonedLayer.Name = newProfileName; - presetsContext.PresetLayers.Add(clonedLayer); - - presetsContext.SetAsActive(clonedLayer.LayerID); - presetsContext.PersistenceLayer = clonedLayer; - - middleRow.CloseAllChildren(); - middleRow.AddChild(CreateSliceSettingsWidget(printer, clonedLayer)); - - inlineTitleEdit.Text = newProfileName; - }); - }; - - Button deleteButton = buttonFactory.Generate("Delete".Localize()); - deleteButton.Click += (s, e) => - { - UiThread.RunOnIdle(() => - { - presetsContext.DeleteLayer(); - this.Close(); - }); - }; - - Button closeButton = buttonFactory.Generate("Close".Localize()); - closeButton.Click += (sender, e) => - { - this.CloseOnIdle(); - }; - - container.AddChild(duplicateButton); - container.AddChild(deleteButton); - container.AddChild(new HorizontalSpacer()); - container.AddChild(closeButton); - - return container; + this.WizardWindow.Padding = 0; + footerRow.Padding = theme.DefaultContainerPadding; + footerRow.Margin = 0; + footerRow.Border = new BorderDouble(top: 1); + footerRow.BorderColor = theme.TabBarBackground; + base.OnLoad(args); } } }