diff --git a/MainSlidePanel.cs b/MainSlidePanel.cs index 84f502ffc..7205a3b06 100644 --- a/MainSlidePanel.cs +++ b/MainSlidePanel.cs @@ -65,6 +65,7 @@ namespace MatterHackers.MatterControl public TabPage AboutTabPage; TextImageButtonFactory advancedControlsButtonFactory = new TextImageButtonFactory(); RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected; + public EventHandler AdvancedControlsLoaded; GuiWidget LeftPanel { @@ -211,6 +212,14 @@ namespace MatterHackers.MatterControl //Empty function used as placeholder } + void OnAdvancedControlsLoaded() + { + if (AdvancedControlsLoaded != null) + { + AdvancedControlsLoaded(this, null); + } + } + SliceSettingsWidget.UiState sliceSettingsUiState; void DoChangePanel(object state) { @@ -220,7 +229,9 @@ namespace MatterHackers.MatterControl // remove the advance control and replace it with new ones build for the selected printer int advancedControlsWidgetIndex = RightPanel.GetChildIndex(this.advancedControlsTabControl); RightPanel.RemoveChild(advancedControlsWidgetIndex); - this.advancedControlsTabControl = CreateNewAdvancedControlsTab(sliceSettingsUiState); + + this.advancedControlsTabControl = CreateNewAdvancedControlsTab(sliceSettingsUiState); + RightPanel.AddChild(this.advancedControlsTabControl, advancedControlsWidgetIndex); // set the selected tab back to the one it was before we replace the control @@ -231,6 +242,8 @@ namespace MatterHackers.MatterControl RectangleDouble localBounds = this.LocalBounds; this.LocalBounds = new RectangleDouble(0, 0, this.LocalBounds.Width - 1, 10); this.LocalBounds = localBounds; + OnAdvancedControlsLoaded(); + } TabControl CreateNewAdvancedControlsTab(SliceSettingsWidget.UiState sliceSettingsUiState) @@ -266,6 +279,8 @@ namespace MatterHackers.MatterControl advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(sliceSettingsWidget, new LocalizedString("Slice Settings").Translated), 18, ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes())); + + return advancedControls; } diff --git a/PrinterCommunication.cs b/PrinterCommunication.cs index bd6329279..c32762163 100644 --- a/PrinterCommunication.cs +++ b/PrinterCommunication.cs @@ -106,6 +106,12 @@ namespace MatterHackers.MatterControl get { return firmwareType; } } + string firmwareVersion; + public string FirmwareVersion + { + get { return firmwareVersion; } + } + static PrinterCommunication globalInstance; string connectionFailureMessage = "Unknown Reason"; @@ -124,6 +130,7 @@ namespace MatterHackers.MatterControl public RootedObjectEventHandler ExtruderTemperatureRead = new RootedObjectEventHandler(); public RootedObjectEventHandler ExtruderTemperatureSet = new RootedObjectEventHandler(); public RootedObjectEventHandler FanSpeedSet = new RootedObjectEventHandler(); + public RootedObjectEventHandler FirmwareVersionRead = new RootedObjectEventHandler(); public RootedObjectEventHandler PrintFinished = new RootedObjectEventHandler(); public RootedObjectEventHandler PositionRead = new RootedObjectEventHandler(); public RootedObjectEventHandler ReadLine = new RootedObjectEventHandler(); @@ -531,7 +538,7 @@ namespace MatterHackers.MatterControl { return CommunicationState == CommunicationStates.Paused; } - } + } int NumberOfLinesInCurrentPrint { @@ -965,6 +972,16 @@ namespace MatterHackers.MatterControl firmwareType = FirmwareTypes.Sprinter; } } + string firmwareVersionReported = ""; + if (GCodeFile.GetFirstStringAfter("PROTOCOL_VERSION:", foundStringEventArgs.LineToCheck, " ", ref firmwareVersionReported)) + { + //Firmware version was detected and is different + if (firmwareVersionReported != "" && firmwareVersion != firmwareVersionReported) + { + firmwareVersion = firmwareVersionReported; + OnFirmwareVersionRead(null); + } + } } public void FoundStart(object sender, EventArgs e) @@ -1076,6 +1093,7 @@ namespace MatterHackers.MatterControl CommunicationState = CommunicationStates.AttemptingToConnect; this.stopTryingToConnect = false; firmwareType = FirmwareTypes.Unknown; + firmwareVersion = null; if (SerialPortIsAvailable(this.ActivePrinter.ComPort)) { @@ -1244,6 +1262,11 @@ namespace MatterHackers.MatterControl PrintFinished.CallEvents(this, new PrintItemWrapperEventArgs(this.ActivePrintItem)); } + void OnFirmwareVersionRead(EventArgs e) + { + FirmwareVersionRead.CallEvents(this, e); + } + void OnExtruderTemperatureRead(EventArgs e) { ExtruderTemperatureRead.CallEvents(this, e); diff --git a/PrinterControls/ManualPrinterControls.cs b/PrinterControls/ManualPrinterControls.cs index 79330bc5a..81753a280 100644 --- a/PrinterControls/ManualPrinterControls.cs +++ b/PrinterControls/ManualPrinterControls.cs @@ -198,6 +198,7 @@ namespace MatterHackers.MatterControl FlowLayoutWidget controlsTopToBottomLayout = new FlowLayoutWidget(FlowDirection.TopToBottom); controlsTopToBottomLayout.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth; controlsTopToBottomLayout.VAnchor = Agg.UI.VAnchor.FitToChildren; + controlsTopToBottomLayout.Name = "ManualPrinterControls.ControlsContainer"; controlsTopToBottomLayout.Padding = new BorderDouble(3, 0);