From 9eddf6822bc4ff6e4697d602069c414b452d5239 Mon Sep 17 00:00:00 2001 From: larsbrubaker Date: Sat, 26 Jul 2014 13:43:55 -0700 Subject: [PATCH] Moved SliceSettingsWidgetUiState into its own file Fixed the edit locking during loading in 3d view. Got the 3d views to update the bed size and shape when changed. --- ApplicationView/ThirdPanelTabView.cs | 4 +- MatterControl.csproj | 1 + .../BaseClasses/PartPreview3DWidget.cs | 33 +-- PartPreviewWindow/View3DTransfromPart.cs | 25 +- SlicerConfiguration/SliceSettingsWidget.cs | 266 ++++++++++-------- .../SliceSettingsWidgetUiState.cs | 56 ++++ .../Printrbot/Simple Metal/config.ini | 2 +- 7 files changed, 229 insertions(+), 158 deletions(-) create mode 100644 SlicerConfiguration/SliceSettingsWidgetUiState.cs diff --git a/ApplicationView/ThirdPanelTabView.cs b/ApplicationView/ThirdPanelTabView.cs index 2842936ec..b5fda02fe 100644 --- a/ApplicationView/ThirdPanelTabView.cs +++ b/ApplicationView/ThirdPanelTabView.cs @@ -96,10 +96,10 @@ namespace MatterHackers.MatterControl UiThread.RunOnIdle(ReloadSliceSettings); } - static SliceSettingsWidget.UiState sliceSettingsUiState = new SliceSettingsWidget.UiState(); + static SliceSettingsWidgetUiState sliceSettingsUiState = new SliceSettingsWidgetUiState(); void SaveCurrentPanelIndex(object sender, EventArgs e) { - sliceSettingsUiState = new SliceSettingsWidget.UiState(sliceSettingsWidget); + sliceSettingsUiState = new SliceSettingsWidgetUiState(sliceSettingsWidget); if (advancedControls2.Children.Count > 0) { diff --git a/MatterControl.csproj b/MatterControl.csproj index 90b267f48..4e1bd42ee 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -132,6 +132,7 @@ + diff --git a/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs b/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs index 1523780e7..8dc4a76f9 100644 --- a/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs +++ b/PartPreviewWindow/BaseClasses/PartPreview3DWidget.cs @@ -56,33 +56,22 @@ namespace MatterHackers.MatterControl.PartPreviewWindow public PartPreview3DWidget() { + SliceSettingsWidget.PartPreviewSettingsChanged.RegisterEvent(RecreateBedAndPartPosition, ref unregisterEvents); } - public override void OnParentChanged(EventArgs e) + void RecreateBedAndPartPosition(object sender, EventArgs e) { - ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent((sender, changeEventArgs) => + double buildHeight = ActiveSliceSettings.Instance.BuildHeight; + + UiThread.RunOnIdle((state) => { - double buildHeight = ActiveSliceSettings.Instance.BuildHeight; - - UiThread.RunOnIdle((state) => - { -#if false - "bed_size", - "print_center", - "build_height", - "bed_shape", - "center_part_on_bed", -#endif - meshViewerWidget.CreatePrintBed( - new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), - ActiveSliceSettings.Instance.BedCenter, - ActiveSliceSettings.Instance.BedShape); - }); - }, ref unregisterEvents); - - base.OnParentChanged(e); + meshViewerWidget.CreatePrintBed( + new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), + ActiveSliceSettings.Instance.BedCenter, + ActiveSliceSettings.Instance.BedShape); + }); } - + public override void OnClosed(EventArgs e) { if (unregisterEvents != null) diff --git a/PartPreviewWindow/View3DTransfromPart.cs b/PartPreviewWindow/View3DTransfromPart.cs index f144050ca..f7f2697e6 100644 --- a/PartPreviewWindow/View3DTransfromPart.cs +++ b/PartPreviewWindow/View3DTransfromPart.cs @@ -458,8 +458,18 @@ namespace MatterHackers.MatterControl.PartPreviewWindow if (windowType == WindowType.Embeded) { PrinterConnectionAndCommunication.Instance.CommunicationStateChanged.RegisterEvent(SetEditControlsBasedOnPrinterState, ref unregisterEvents); + if (windowType == WindowType.Embeded) + { + // make sure we lock the controls if we are printing or paused + switch (PrinterConnectionAndCommunication.Instance.CommunicationState) + { + case PrinterConnectionAndCommunication.CommunicationStates.Printing: + case PrinterConnectionAndCommunication.CommunicationStates.Paused: + LockEditControls(); + break; + } + } } - SetEditControlsBasedOnPrinterState(this, null); } void SetEditControlsBasedOnPrinterState(object sender, EventArgs e) @@ -478,10 +488,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow break; } } - else - { - UnlockEditControls(); - } } bool hasDrawn = false; @@ -826,10 +832,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } } - bool wasInEditMode = false; + bool viewIsInEditModePreLock = false; void LockEditControls() { - wasInEditMode = doEdittingButtonsContainer.Visible; + viewIsInEditModePreLock = doEdittingButtonsContainer.Visible; enterEditButtonsContainer.Visible = false; doEdittingButtonsContainer.Visible = false; buttonRightPanelDisabledCover.Visible = true; @@ -845,7 +851,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow buttonRightPanelDisabledCover.Visible = false; processingProgressControl.Visible = false; - if (wasInEditMode) + if (viewIsInEditModePreLock) { if (!enterEditButtonsContainer.Visible) { @@ -886,7 +892,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow { processingProgressControl.Visible = true; LockEditControls(); - wasInEditMode = true; + viewIsInEditModePreLock = true; BackgroundWorker createDiscreteMeshesBackgroundWorker = null; createDiscreteMeshesBackgroundWorker = new BackgroundWorker(); @@ -1691,7 +1697,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow expandScaleOptions.CheckedStateChanged += new CheckBox.CheckedStateChangedEventHandler(expandScaleOptions_CheckedStateChanged); } - bool partSelectButtonWasClicked = false; private void MergeAndSavePartsToStl(PrintItemWrapper printItemWarpperToSwitchTo = null) { diff --git a/SlicerConfiguration/SliceSettingsWidget.cs b/SlicerConfiguration/SliceSettingsWidget.cs index 4a6b1b406..21e13b123 100644 --- a/SlicerConfiguration/SliceSettingsWidget.cs +++ b/SlicerConfiguration/SliceSettingsWidget.cs @@ -41,42 +41,35 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { public class SliceSettingsWidget : GuiWidget { + static List settingToReloadUiWhenChanged = new List() + { + "has_fan", + "has_heated_bed", + "has_sd_card_reader", + }; + + static List settingsRequiringPreviewUpdate = new List() + { + "bed_size", + "print_center", + "build_height", + "bed_shape", + "center_part_on_bed", + }; + + public static RootedObjectEventHandler PartPreviewSettingsChanged = new RootedObjectEventHandler(); + const string SliceSettingsShowHelpEntry = "SliceSettingsShowHelp"; const string SliceSettingsLevelEntry = "SliceSettingsLevel"; TextImageButtonFactory buttonFactory = new TextImageButtonFactory(); - public class UiState - { - public class WhichItem - { - public int index = 0; - public string name = ""; - } - - public WhichItem selectedCategory = new WhichItem(); - public WhichItem selectedGroup = new WhichItem(); - - public UiState() - { - } - - public UiState(SliceSettingsWidget settingsWidgetToCopyFrom) - { - if (settingsWidgetToCopyFrom != null) - { - settingsWidgetToCopyFrom.CurrentlyActiveCategory(out selectedCategory.index, out selectedCategory.name); - settingsWidgetToCopyFrom.CurrentlyActiveGroup(out selectedGroup.index, out selectedGroup.name); - } - } - } - TabControl categoryTabs; GroupBox noConnectionMessageContainer; FlowLayoutWidget settingsControlBar; CheckBox showHelpBox; CheckBox showAllDetails; - public SliceSettingsWidget(UiState uiState) + public SliceSettingsWidget(SliceSettingsWidgetUiState uiState) { int minSettingNameWidth = 220; buttonFactory.FixedHeight = 20; @@ -207,14 +200,14 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public string UserLevel { - get + get { if (showAllDetails.Checked) { return "Advanced"; } - return "Beginner"; + return "Beginner"; } } @@ -246,7 +239,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration void RebuildSlicerSettings(object sender, EventArgs e) { UserSettings.Instance.set(SliceSettingsShowHelpEntry, showHelpBox.Checked.ToString().ToLower()); - if(showAllDetails.Checked) + if (showAllDetails.Checked) { UserSettings.Instance.set(SliceSettingsLevelEntry, "Advanced"); } @@ -254,7 +247,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { UserSettings.Instance.set(SliceSettingsLevelEntry, "Beginner"); } - + CheckBox checkBox = sender as CheckBox; if (checkBox != null) { @@ -319,7 +312,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } int tabIndexForItem = 0; - private TabControl CreateSideTabsAndPages(int minSettingNameWidth, OrganizerCategory category, UiState uiState) + private TabControl CreateSideTabsAndPages(int minSettingNameWidth, OrganizerCategory category, SliceSettingsWidgetUiState uiState) { TabControl groupTabs = new TabControl(Orientation.Vertical); groupTabs.Margin = new BorderDouble(0, 0, 0, 5); @@ -327,8 +320,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration foreach (OrganizerGroup group in category.GroupsList) { tabIndexForItem = 0; - string groupTabLabel = LocalizedString.Get (group.Name); - TabPage groupTabPage = new TabPage(groupTabLabel); + string groupTabLabel = LocalizedString.Get(group.Name); + TabPage groupTabPage = new TabPage(groupTabLabel); groupTabPage.HAnchor = HAnchor.ParentLeftRight; SimpleTextTabWidget groupTabWidget = new SimpleTextTabWidget(groupTabPage, group.Name + " Tab", 14, @@ -363,8 +356,8 @@ namespace MatterHackers.MatterControl.SlicerConfiguration if (addedSettingToSubGroup) { needToAddSubGroup = true; - string groupBoxLabel = LocalizedString.Get (subGroup.Name); - GroupBox groupBox = new GroupBox (groupBoxLabel); + string groupBoxLabel = LocalizedString.Get(subGroup.Name); + GroupBox groupBox = new GroupBox(groupBoxLabel); groupBox.TextColor = ActiveTheme.Instance.PrimaryTextColor; groupBox.BorderColor = ActiveTheme.Instance.PrimaryTextColor; groupBox.AddChild(topToBottomSettings); @@ -380,7 +373,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration subGroupLayoutTopToBottom.VAnchor = VAnchor.FitToChildren; subGroupLayoutTopToBottom.HAnchor = Agg.UI.HAnchor.ParentLeftRight; - + //subGroupLayoutTopToBottom.DebugShowBounds = true; //scrollOnGroupTab.DebugShowBounds = true; scrollOnGroupTab.AddChild(subGroupLayoutTopToBottom); @@ -408,7 +401,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration EnglishTextWrapping wrapper = new EnglishTextWrapping(helpPointSize); string[] wrappedText = wrapper.WrapText(settingInfo.HelpText, textRegionWidth - allText.Padding.Width); - foreach(string line in wrappedText) + foreach (string line in wrappedText) { GuiWidget helpWidget = new TextWidget(line, pointSize: helpPointSize, textColor: RGBA_Bytes.White); helpWidget.Margin = new BorderDouble(5, 0, 0, 0); @@ -474,31 +467,28 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { string extraSettings = settingData.ExtraSettings; extraSettings = extraSettings.Replace("\\n", "\n"); - TextWidget dataTypeInfo = new TextWidget(extraSettings, pointSize:10); + TextWidget dataTypeInfo = new TextWidget(extraSettings, pointSize: 10); dataTypeInfo.TextColor = ActiveTheme.Instance.PrimaryTextColor; dataTypeInfo.Margin = new BorderDouble(5, 0); return dataTypeInfo; } - - List settingToReloadUiWhenChanged = new List() + private void CallEventsOnSettingsChange(OrganizerSettingsData settingData) { - "has_fan", - "has_heated_bed", - "has_sd_card_reader", - }; + if (settingToReloadUiWhenChanged.Contains(settingData.SlicerConfigName)) + { + ApplicationWidget.Instance.ReloadAll(null, null); + } - private void ReloadUiIfRequired(OrganizerSettingsData settingData) - { - if (settingToReloadUiWhenChanged.Contains(settingData.SlicerConfigName)) - { - ApplicationWidget.Instance.ReloadAll(null, null); - } - } + if (settingsRequiringPreviewUpdate.Contains(settingData.SlicerConfigName)) + { + PartPreviewSettingsChanged.CallEvents(this, null); + } + } - private GuiWidget CreateSettingInfoUIControls(OrganizerSettingsData settingData, double minSettingNameWidth) + private GuiWidget CreateSettingInfoUIControls(OrganizerSettingsData settingData, double minSettingNameWidth) { - GuiWidget container = new GuiWidget(); + GuiWidget container = new GuiWidget(); FlowLayoutWidget leftToRightLayout = new FlowLayoutWidget(); bool addQualityOverlay = false; @@ -524,24 +514,24 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { string convertedNewLines = settingData.PresentationName.Replace("\\n ", "\n"); convertedNewLines = convertedNewLines.Replace("\\n", "\n"); - convertedNewLines = LocalizedString.Get (convertedNewLines); + convertedNewLines = LocalizedString.Get(convertedNewLines); TextWidget settingName = new TextWidget(convertedNewLines); settingName.TextColor = ActiveTheme.Instance.PrimaryTextColor; if (ActiveSliceSettings.Instance.SettingExistsInLayer(settingData.SlicerConfigName, 3)) { - addMaterialOverlay = true; + addMaterialOverlay = true; } else if (ActiveSliceSettings.Instance.SettingExistsInLayer(settingData.SlicerConfigName, 2)) { addQualityOverlay = true; } - + settingName.Width = minSettingNameWidth; //settingName.MinimumSize = new Vector2(minSettingNameWidth, settingName.MinimumSize.y); leftToRightLayout.AddChild(settingName); } - + switch (settingData.DataEditType) { case OrganizerSettingsData.DataEditTypes.INT: @@ -549,7 +539,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration int currentValue = 0; int.TryParse(sliceSettingValue, out currentValue); MHNumberEdit intEditWidget = new MHNumberEdit(currentValue, pixelWidth: intEditWidth, tabIndex: tabIndexForItem++); - intEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); }; + intEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(intEditWidget); leftToRightLayout.AddChild(getSettingInfoData(settingData)); } @@ -560,7 +554,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration double currentValue = 0; double.TryParse(sliceSettingValue, out currentValue); MHNumberEdit doubleEditWidget = new MHNumberEdit(currentValue, allowNegatives: true, allowDecimals: true, pixelWidth: doubleEditWidth, tabIndex: tabIndexForItem++); - doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); }; + doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(doubleEditWidget); leftToRightLayout.AddChild(getSettingInfoData(settingData)); } @@ -571,11 +569,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration double currentValue = 0; double.TryParse(sliceSettingValue, out currentValue); MHNumberEdit doubleEditWidget = new MHNumberEdit(currentValue, allowDecimals: true, pixelWidth: doubleEditWidth, tabIndex: tabIndexForItem++); - doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => - { - SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); - ReloadUiIfRequired(settingData); - }; + doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(doubleEditWidget); leftToRightLayout.AddChild(getSettingInfoData(settingData)); } @@ -586,7 +584,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration double currentValue = 0; double.TryParse(sliceSettingValue, out currentValue); MHNumberEdit doubleEditWidget = new MHNumberEdit(currentValue, allowDecimals: true, allowNegatives: true, pixelWidth: doubleEditWidth, tabIndex: tabIndexForItem++); - doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); }; + doubleEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, ((NumberEdit)sender).Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(doubleEditWidget); leftToRightLayout.AddChild(getSettingInfoData(settingData)); } @@ -601,7 +603,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration string text = textEditWidget.Text; text = text.Trim(); bool isPercent = text.Contains("%"); - if(isPercent) + if (isPercent) { text = text.Substring(0, text.IndexOf("%")); } @@ -614,6 +616,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } textEditWidget.Text = text; SaveSetting(settingData.SlicerConfigName, textEditWidget.Text); + CallEventsOnSettingsChange(settingData); }; leftToRightLayout.AddChild(stringEdit); @@ -637,6 +640,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { SaveSetting(settingData.SlicerConfigName, "0"); } + CallEventsOnSettingsChange(settingData); }; leftToRightLayout.AddChild(checkBoxWidget); } @@ -645,7 +649,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration case OrganizerSettingsData.DataEditTypes.STRING: { MHTextEditWidget stringEdit = new MHTextEditWidget(sliceSettingValue, pixelWidth: 120, tabIndex: tabIndexForItem++); - stringEdit.ActualTextEditWidget.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text); }; + stringEdit.ActualTextEditWidget.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(stringEdit); } break; @@ -654,7 +662,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { string convertedNewLines = sliceSettingValue.Replace("\\n", "\n"); MHTextEditWidget stringEdit = new MHTextEditWidget(convertedNewLines, pixelWidth: 320, pixelHeight: multiLineEditHeight, multiLine: true, tabIndex: tabIndexForItem++); - stringEdit.ActualTextEditWidget.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text.Replace("\n", "\\n")); }; + stringEdit.ActualTextEditWidget.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, ((TextEditWidget)sender).Text.Replace("\n", "\\n")); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(stringEdit); } break; @@ -663,9 +675,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { StyledDropDownList selectableOptions = new StyledDropDownList("None", maxHeight: 200); selectableOptions.Margin = new BorderDouble(); - + string[] listItems = settingData.ExtraSettings.Split(','); - + foreach (string listItem in listItems) { MenuItem newItem = selectableOptions.AddItem(listItem); @@ -678,7 +690,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { MenuItem menuItem = ((MenuItem)sender); SaveSetting(settingData.SlicerConfigName, menuItem.Text); - ReloadUiIfRequired(settingData); + CallEventsOnSettingsChange(settingData); }; } leftToRightLayout.AddChild(selectableOptions); @@ -703,7 +715,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration SaveSetting(settingData.SlicerConfigName, "0"); // Now hide all of the settings that this control is associated with. } - ReloadUiIfRequired(settingData); + CallEventsOnSettingsChange(settingData); }; leftToRightLayout.AddChild(checkBoxWidget); } @@ -716,37 +728,37 @@ namespace MatterHackers.MatterControl.SlicerConfiguration { xyValueStrings = new string[] { "0", "0" }; } - double currentXValue = 0; - double.TryParse(xyValueStrings[0], out currentXValue); - MHNumberEdit xEditWidget = new MHNumberEdit(currentXValue, allowDecimals: true, pixelWidth: vectorXYEditWidth, tabIndex: tabIndexForItem++); + double currentXValue = 0; + double.TryParse(xyValueStrings[0], out currentXValue); + MHNumberEdit xEditWidget = new MHNumberEdit(currentXValue, allowDecimals: true, pixelWidth: vectorXYEditWidth, tabIndex: tabIndexForItem++); - double currentYValue = 0; - double.TryParse(xyValueStrings[1], out currentYValue); - MHNumberEdit yEditWidget = new MHNumberEdit(currentYValue, allowDecimals: true, pixelWidth: vectorXYEditWidth, tabIndex: tabIndexForItem++); - - xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => - { - SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); - ReloadUiIfRequired(settingData); - }; + double currentYValue = 0; + double.TryParse(xyValueStrings[1], out currentYValue); + MHNumberEdit yEditWidget = new MHNumberEdit(currentYValue, allowDecimals: true, pixelWidth: vectorXYEditWidth, tabIndex: tabIndexForItem++); - leftToRightLayout.AddChild(xEditWidget); - TextWidget xText = new TextWidget("x"); - xText.TextColor = ActiveTheme.Instance.PrimaryTextColor; - xText.Margin = new BorderDouble(5, 0); - leftToRightLayout.AddChild(xText); + xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; + + leftToRightLayout.AddChild(xEditWidget); + TextWidget xText = new TextWidget("x"); + xText.TextColor = ActiveTheme.Instance.PrimaryTextColor; + xText.Margin = new BorderDouble(5, 0); + leftToRightLayout.AddChild(xText); + + yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; + leftToRightLayout.AddChild(yEditWidget); + TextWidget yText = new TextWidget("y"); + yText.TextColor = ActiveTheme.Instance.PrimaryTextColor; + yText.Margin = new BorderDouble(5, 0); + leftToRightLayout.AddChild(yText); - yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => - { - SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "," + yEditWidget.ActuallNumberEdit.Value.ToString()); - ReloadUiIfRequired(settingData); - }; - leftToRightLayout.AddChild(yEditWidget); - TextWidget yText = new TextWidget("y"); - yText.TextColor = ActiveTheme.Instance.PrimaryTextColor; - yText.Margin = new BorderDouble(5, 0); - leftToRightLayout.AddChild(yText); - } break; @@ -765,7 +777,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration double.TryParse(xyValueStrings[1], out currentYValue); MHNumberEdit yEditWidget = new MHNumberEdit(currentYValue, allowDecimals: true, allowNegatives: true, pixelWidth: vectorXYEditWidth, tabIndex: tabIndexForItem++); { - xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString()); }; + xEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(xEditWidget); TextWidget xText = new TextWidget("x"); xText.TextColor = ActiveTheme.Instance.PrimaryTextColor; @@ -773,7 +789,11 @@ namespace MatterHackers.MatterControl.SlicerConfiguration leftToRightLayout.AddChild(xText); } { - yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => { SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString()); }; + yEditWidget.ActuallNumberEdit.EditComplete += (sender, e) => + { + SaveSetting(settingData.SlicerConfigName, xEditWidget.ActuallNumberEdit.Value.ToString() + "x" + yEditWidget.ActuallNumberEdit.Value.ToString()); + CallEventsOnSettingsChange(settingData); + }; leftToRightLayout.AddChild(yEditWidget); TextWidget yText = new TextWidget("y"); yText.TextColor = ActiveTheme.Instance.PrimaryTextColor; @@ -806,7 +826,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration container.AddChild(leftToRightLayout); if (addQualityOverlay || addMaterialOverlay) - { + { SettingPresetOverlay overlay = new SettingPresetOverlay(); overlay.HAnchor = HAnchor.ParentLeftRight; overlay.VAnchor = Agg.UI.VAnchor.ParentBottomTop; @@ -828,15 +848,15 @@ namespace MatterHackers.MatterControl.SlicerConfiguration clickToEdit.OverlayColor = qualityOverlayColor; editButton.Click += (sender, e) => { - if (ApplicationWidget.Instance.EditQualityPresetsWindow == null) + if (ApplicationWidget.Instance.EditQualityPresetsWindow == null) { - ApplicationWidget.Instance.EditQualityPresetsWindow = new SlicePresetsWindow(ReloadOptions, "Quality", "quality", false, ActivePrinterProfile.Instance.ActiveQualitySettingsID); - ApplicationWidget.Instance.EditQualityPresetsWindow.Closed += (popupWindowSender, popupWindowSenderE) => { ApplicationWidget.Instance.EditQualityPresetsWindow = null; }; + ApplicationWidget.Instance.EditQualityPresetsWindow = new SlicePresetsWindow(ReloadOptions, "Quality", "quality", false, ActivePrinterProfile.Instance.ActiveQualitySettingsID); + ApplicationWidget.Instance.EditQualityPresetsWindow.Closed += (popupWindowSender, popupWindowSenderE) => { ApplicationWidget.Instance.EditQualityPresetsWindow = null; }; } else { - ApplicationWidget.Instance.EditQualityPresetsWindow.ChangeToSlicePresetFromID(ActivePrinterProfile.Instance.ActiveQualitySettingsID); - ApplicationWidget.Instance.EditQualityPresetsWindow.BringToFront(); + ApplicationWidget.Instance.EditQualityPresetsWindow.ChangeToSlicePresetFromID(ActivePrinterProfile.Instance.ActiveQualitySettingsID); + ApplicationWidget.Instance.EditQualityPresetsWindow.BringToFront(); } }; } @@ -845,19 +865,19 @@ namespace MatterHackers.MatterControl.SlicerConfiguration overlay.OverlayColor = materialOverlayColor; clickToEdit.OverlayColor = materialOverlayColor; editButton.Click += (sender, e) => - { - if (ApplicationWidget.Instance.EditMaterialPresetsWindow == null) + { + if (ApplicationWidget.Instance.EditMaterialPresetsWindow == null) { - ApplicationWidget.Instance.EditMaterialPresetsWindow = new SlicePresetsWindow(ReloadOptions, "Material", "material", false, ActivePrinterProfile.Instance.GetMaterialSetting(1)); - ApplicationWidget.Instance.EditMaterialPresetsWindow.Closed += (popupWindowSender, popupWindowSenderE) => { ApplicationWidget.Instance.EditMaterialPresetsWindow = null; }; + ApplicationWidget.Instance.EditMaterialPresetsWindow = new SlicePresetsWindow(ReloadOptions, "Material", "material", false, ActivePrinterProfile.Instance.GetMaterialSetting(1)); + ApplicationWidget.Instance.EditMaterialPresetsWindow.Closed += (popupWindowSender, popupWindowSenderE) => { ApplicationWidget.Instance.EditMaterialPresetsWindow = null; }; } else { - ApplicationWidget.Instance.EditMaterialPresetsWindow.ChangeToSlicePresetFromID(ActivePrinterProfile.Instance.GetMaterialSetting(1)); - ApplicationWidget.Instance.EditMaterialPresetsWindow.BringToFront(); - } + ApplicationWidget.Instance.EditMaterialPresetsWindow.ChangeToSlicePresetFromID(ActivePrinterProfile.Instance.GetMaterialSetting(1)); + ApplicationWidget.Instance.EditMaterialPresetsWindow.BringToFront(); + } }; - } + } container.MouseEnterBounds += (sender, e) => { @@ -878,7 +898,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration }; container.AddChild(overlay); - container.AddChild(clickToEdit); + container.AddChild(clickToEdit); } @@ -901,7 +921,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration } public override void OnDraw(Graphics2D graphics2D) - { + { base.OnDraw(graphics2D); } } @@ -912,7 +932,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration public override void OnDraw(Graphics2D graphics2D) { - + RoundedRect rect = new RoundedRect(LocalBounds, 0); graphics2D.Render(rect, new RGBA_Bytes(OverlayColor, 220)); base.OnDraw(graphics2D); @@ -923,13 +943,13 @@ namespace MatterHackers.MatterControl.SlicerConfiguration class SettingPresetOverlay : GuiWidget { public RGBA_Bytes OverlayColor; - + public override void OnDraw(Graphics2D graphics2D) { base.OnDraw(graphics2D); - RoundedRect rect = new RoundedRect(LocalBounds,0); - graphics2D.Render(rect,new RGBA_Bytes(OverlayColor, 50)); - graphics2D.Render(new Stroke(rect, 3),OverlayColor); + RoundedRect rect = new RoundedRect(LocalBounds, 0); + graphics2D.Render(rect, new RGBA_Bytes(OverlayColor, 50)); + graphics2D.Render(new Stroke(rect, 3), OverlayColor); } } diff --git a/SlicerConfiguration/SliceSettingsWidgetUiState.cs b/SlicerConfiguration/SliceSettingsWidgetUiState.cs new file mode 100644 index 000000000..dc9a294c8 --- /dev/null +++ b/SlicerConfiguration/SliceSettingsWidgetUiState.cs @@ -0,0 +1,56 @@ +/* +Copyright (c) 2014, Lars Brubaker +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +namespace MatterHackers.MatterControl.SlicerConfiguration +{ + public class SliceSettingsWidgetUiState + { + public class WhichItem + { + public int index = 0; + public string name = ""; + } + + public WhichItem selectedCategory = new WhichItem(); + public WhichItem selectedGroup = new WhichItem(); + + public SliceSettingsWidgetUiState() + { + } + + public SliceSettingsWidgetUiState(SliceSettingsWidget settingsWidgetToCopyFrom) + { + if (settingsWidgetToCopyFrom != null) + { + settingsWidgetToCopyFrom.CurrentlyActiveCategory(out selectedCategory.index, out selectedCategory.name); + settingsWidgetToCopyFrom.CurrentlyActiveGroup(out selectedGroup.index, out selectedGroup.name); + } + } + } +} diff --git a/StaticData/PrinterSettings/Printrbot/Simple Metal/config.ini b/StaticData/PrinterSettings/Printrbot/Simple Metal/config.ini index dd07c4952..aafb1ea1f 100644 --- a/StaticData/PrinterSettings/Printrbot/Simple Metal/config.ini +++ b/StaticData/PrinterSettings/Printrbot/Simple Metal/config.ini @@ -15,7 +15,7 @@ duplicate = 1 duplicate_distance = 6 duplicate_grid = 1,1 end_gcode = M104 S0 ; turn off temperature\nG28 X0 ; home X axis\ng28 y0 ; home y axis\nM84 ; disable motors -external_perimeter_speed = 1 +external_perimeter_speed = 40 external_perimeters_first = 0 extra_perimeters = 0 extruder_clearance_height = 20