diff --git a/AboutPage.cs b/AboutPage/AboutPage.cs
similarity index 100%
rename from AboutPage.cs
rename to AboutPage/AboutPage.cs
diff --git a/ContactForm.cs b/AboutPage/ContactForm.cs
similarity index 100%
rename from ContactForm.cs
rename to AboutPage/ContactForm.cs
diff --git a/ConfigurationPage/ConfigurationPage.cs b/ConfigurationPage/ConfigurationPage.cs
new file mode 100644
index 000000000..dbad8f9fa
--- /dev/null
+++ b/ConfigurationPage/ConfigurationPage.cs
@@ -0,0 +1,415 @@
+/*
+Copyright (c) 2014, Kevin Pope
+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.
+*/
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.IO.Ports;
+
+using MatterHackers.Agg;
+using MatterHackers.Agg.UI;
+using MatterHackers.VectorMath;
+using MatterHackers.Agg.Image;
+using MatterHackers.MatterControl.DataStorage;
+using MatterHackers.MatterControl.CustomWidgets;
+using MatterHackers.Localizations;
+
+namespace MatterHackers.MatterControl
+{
+ public class ConfigurationPage : ScrollableWidget
+ {
+ public ConfigurationPage()
+ : base(true)
+ {
+ ScrollArea.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
+ AnchorAll();
+ AddChild(new ConfigurationWidget());
+ }
+ }
+
+ public class ConfigurationWidget : GuiWidget
+ {
+ readonly int TallButtonHeight = 25;
+
+ Button enablePrintLevelingButton;
+ Button disablePrintLevelingButton;
+
+ DisableableWidget eePromControlsContainer;
+ DisableableWidget printLevelContainer;
+
+ TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
+
+ public ConfigurationWidget()
+ {
+ SetDisplayAttributes();
+
+ HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
+ VAnchor = Agg.UI.VAnchor.FitToChildren;
+
+ FlowLayoutWidget mainLayoutContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
+ mainLayoutContainer.HAnchor = Agg.UI.HAnchor.Max_FitToChildren_ParentWidth;
+ mainLayoutContainer.VAnchor = Agg.UI.VAnchor.FitToChildren;
+ mainLayoutContainer.Padding = new BorderDouble(3, 0, 3, 10);
+
+ AddEePromControls(mainLayoutContainer);
+ AddPrintLevelingControls(mainLayoutContainer);
+ AddChild(mainLayoutContainer);
+
+ AddHandlers();
+ SetVisibleControls();
+ }
+
+ private void AddEePromControls(FlowLayoutWidget controlsTopToBottomLayout)
+ {
+ GroupBox eePromControlsGroupBox = new GroupBox(new LocalizedString("EEProm Settings").Translated);
+
+ eePromControlsGroupBox.Margin = new BorderDouble(0);
+ eePromControlsGroupBox.TextColor = ActiveTheme.Instance.PrimaryTextColor;
+ eePromControlsGroupBox.BorderColor = ActiveTheme.Instance.PrimaryTextColor;
+ eePromControlsGroupBox.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
+ eePromControlsGroupBox.VAnchor = Agg.UI.VAnchor.FitToChildren;
+ eePromControlsGroupBox.Height = 68;
+
+ {
+ FlowLayoutWidget eePromControlsLayout = new FlowLayoutWidget();
+ eePromControlsLayout.HAnchor |= HAnchor.ParentLeftRight;
+ eePromControlsLayout.VAnchor |= Agg.UI.VAnchor.ParentCenter;
+ eePromControlsLayout.Margin = new BorderDouble(3, 0, 3, 6);
+ eePromControlsLayout.Padding = new BorderDouble(0);
+ {
+ Agg.Image.ImageBuffer eePromImage = new Agg.Image.ImageBuffer();
+ ImageBMPIO.LoadImageData(Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath,"Icons", "PrintStatusControls", "leveling-24x24.png"), eePromImage);
+ ImageWidget eePromIcon = new ImageWidget(eePromImage);
+ eePromIcon.Margin = new BorderDouble (right: 6);
+
+ Button openEePromWindow = textImageButtonFactory.Generate(new LocalizedString("CONFIGURE").Translated);
+ openEePromWindow.Click += (sender, e) =>
+ {
+#if false // This is to force the creation of the repetier window for testing when we don't have repetier firmware.
+ new MatterHackers.MatterControl.EeProm.EePromRepetierWidget();
+#else
+ switch(PrinterCommunication.Instance.FirmwareType)
+ {
+ case PrinterCommunication.FirmwareTypes.Repetier:
+ new MatterHackers.MatterControl.EeProm.EePromRepetierWidget();
+ break;
+
+ case PrinterCommunication.FirmwareTypes.Marlin:
+ new MatterHackers.MatterControl.EeProm.EePromMarlinWidget();
+ break;
+
+ default:
+ UiThread.RunOnIdle((state) =>
+ {
+ string message = new LocalizedString("Oops! There is no eeprom mapping for your printer's firmware.").Translated;
+ StyledMessageBox.ShowMessageBox(message, "Warning no eeprom mapping", StyledMessageBox.MessageType.OK);
+ }
+ );
+ break;
+ }
+#endif
+ };
+ //eePromControlsLayout.AddChild(eePromIcon);
+ eePromControlsLayout.AddChild(openEePromWindow);
+ }
+
+ eePromControlsGroupBox.AddChild(eePromControlsLayout);
+ }
+
+ eePromControlsContainer = new DisableableWidget();
+ eePromControlsContainer.AddChild(eePromControlsGroupBox);
+
+ controlsTopToBottomLayout.AddChild(eePromControlsContainer);
+ }
+
+
+
+ private static GuiWidget CreateSeparatorLine()
+ {
+ GuiWidget topLine = new GuiWidget(10, 1);
+ topLine.Margin = new BorderDouble(0, 5);
+ topLine.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
+ topLine.BackgroundColor = RGBA_Bytes.White;
+ return topLine;
+ }
+
+ NumberEdit feedRateValue;
+ Slider feedRateRatioSlider;
+ Slider extrusionRatioSlider;
+ NumberEdit extrusionValue;
+ PrintLevelWizardWindow printLevelWizardWindow;
+
+
+
+ public override void OnClosed(EventArgs e)
+ {
+ if (unregisterEvents != null)
+ {
+ unregisterEvents(this, null);
+ }
+
+ base.OnClosed(e);
+ }
+
+
+ TextWidget printLevelingStatusLabel;
+
+ private void AddPrintLevelingControls(FlowLayoutWidget controlsTopToBottomLayout)
+ {
+ printLevelContainer = new DisableableWidget();
+ printLevelContainer.AddChild(CreatePrintLevelingControlsContainer());
+ controlsTopToBottomLayout.AddChild(printLevelContainer);
+ }
+
+ private GuiWidget CreatePrintLevelingControlsContainer()
+ {
+ GroupBox printLevelingControlsContainer;
+ printLevelingControlsContainer = new GroupBox(new LocalizedString("Automatic Calibration").Translated);
+
+ printLevelingControlsContainer.Margin = new BorderDouble(0);
+ printLevelingControlsContainer.TextColor = ActiveTheme.Instance.PrimaryTextColor;
+ printLevelingControlsContainer.BorderColor = ActiveTheme.Instance.PrimaryTextColor;
+ printLevelingControlsContainer.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
+ printLevelingControlsContainer.Height = 68;
+
+ {
+ FlowLayoutWidget buttonBar = new FlowLayoutWidget();
+ buttonBar.HAnchor |= HAnchor.ParentLeftRight;
+ buttonBar.VAnchor |= Agg.UI.VAnchor.ParentCenter;
+ buttonBar.Margin = new BorderDouble(0, 0, 0, 0);
+ buttonBar.Padding = new BorderDouble(0);
+
+ this.textImageButtonFactory.FixedHeight = TallButtonHeight;
+
+ Button runPrintLevelingButton = textImageButtonFactory.Generate(new LocalizedString("CONFIGURE").Translated);
+ runPrintLevelingButton.Margin = new BorderDouble(left:6);
+ runPrintLevelingButton.VAnchor = VAnchor.ParentCenter;
+ runPrintLevelingButton.Click += new ButtonBase.ButtonEventHandler(runPrintLeveling_Click);
+
+ Agg.Image.ImageBuffer levelingImage = new Agg.Image.ImageBuffer();
+ ImageBMPIO.LoadImageData(Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath,"Icons", "PrintStatusControls", "leveling-24x24.png"), levelingImage);
+ ImageWidget levelingIcon = new ImageWidget(levelingImage);
+ levelingIcon.Margin = new BorderDouble (right: 6);
+
+ enablePrintLevelingButton = textImageButtonFactory.Generate(new LocalizedString("ENABLE").Translated);
+ enablePrintLevelingButton.Margin = new BorderDouble(left:6);
+ enablePrintLevelingButton.VAnchor = VAnchor.ParentCenter;
+ enablePrintLevelingButton.Click += new ButtonBase.ButtonEventHandler(enablePrintLeveling_Click);
+
+ disablePrintLevelingButton = textImageButtonFactory.Generate(new LocalizedString("DISABLE").Translated);
+ disablePrintLevelingButton.Margin = new BorderDouble(left:6);
+ disablePrintLevelingButton.VAnchor = VAnchor.ParentCenter;
+ disablePrintLevelingButton.Click += new ButtonBase.ButtonEventHandler(disablePrintLeveling_Click);
+
+ CheckBox doLevelingCheckBox = new CheckBox(new LocalizedString("Enable Automatic Print Leveling").Translated);
+ doLevelingCheckBox.Margin = new BorderDouble(left: 3);
+ doLevelingCheckBox.TextColor = ActiveTheme.Instance.PrimaryTextColor;
+ doLevelingCheckBox.VAnchor = VAnchor.ParentCenter;
+ doLevelingCheckBox.Checked = ActivePrinterProfile.Instance.DoPrintLeveling;
+
+ printLevelingStatusLabel = new TextWidget ("");
+ printLevelingStatusLabel.AutoExpandBoundsToText = true;
+ printLevelingStatusLabel.TextColor = ActiveTheme.Instance.PrimaryTextColor;
+ printLevelingStatusLabel.VAnchor = VAnchor.ParentCenter;
+
+ GuiWidget hSpacer = new GuiWidget ();
+ hSpacer.HAnchor = HAnchor.ParentLeftRight;
+
+ buttonBar.AddChild(levelingIcon);
+ //buttonBar.AddChild(doLevelingCheckBox);
+ buttonBar.AddChild (printLevelingStatusLabel);
+ buttonBar.AddChild (hSpacer);
+ buttonBar.AddChild(enablePrintLevelingButton);
+ buttonBar.AddChild(disablePrintLevelingButton);
+ buttonBar.AddChild(runPrintLevelingButton);
+ doLevelingCheckBox.CheckedStateChanged += (sender, e) =>
+ {
+ ActivePrinterProfile.Instance.DoPrintLeveling = doLevelingCheckBox.Checked;
+ };
+ ActivePrinterProfile.Instance.DoPrintLevelingChanged.RegisterEvent((sender, e) =>
+ {
+ SetPrintLevelButtonVisiblity();
+
+ }, ref unregisterEvents);
+
+ printLevelingControlsContainer.AddChild(buttonBar);
+ }
+ SetPrintLevelButtonVisiblity ();
+ return printLevelingControlsContainer;
+ }
+
+ private void OpenPrintLevelWizard()
+ {
+ if (printLevelWizardWindow == null)
+ {
+ printLevelWizardWindow = new PrintLevelWizardWindow();
+ printLevelWizardWindow.Closed += (sender, e) =>
+ {
+ printLevelWizardWindow = null;
+ };
+ printLevelWizardWindow.ShowAsSystemWindow();
+ }
+ else
+ {
+ printLevelWizardWindow.BringToFront();
+ }
+ }
+
+
+ private void SetDisplayAttributes()
+ {
+ this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
+
+ this.textImageButtonFactory.normalFillColor = RGBA_Bytes.White;
+ this.textImageButtonFactory.disabledFillColor = RGBA_Bytes.White;
+
+ this.textImageButtonFactory.FixedHeight = TallButtonHeight;
+ this.textImageButtonFactory.fontSize = 11;
+
+ this.textImageButtonFactory.disabledTextColor = RGBA_Bytes.DarkGray;
+ this.textImageButtonFactory.hoverTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ this.textImageButtonFactory.normalTextColor = RGBA_Bytes.Black;
+ this.textImageButtonFactory.pressedTextColor = ActiveTheme.Instance.PrimaryTextColor;
+ }
+
+ private void SetVisibleControls()
+ {
+ if (ActivePrinterProfile.Instance.ActivePrinter == null)
+ {
+ // no printer selected
+ eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
+ printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
+ }
+ else // we at least have a printer selected
+ {
+ switch (PrinterCommunication.Instance.CommunicationState)
+ {
+ case PrinterCommunication.CommunicationStates.Disconnecting:
+ case PrinterCommunication.CommunicationStates.ConnectionLost:
+ case PrinterCommunication.CommunicationStates.Disconnected:
+ case PrinterCommunication.CommunicationStates.AttemptingToConnect:
+ case PrinterCommunication.CommunicationStates.FailedToConnect:
+ eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
+ printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
+ break;
+
+ case PrinterCommunication.CommunicationStates.FinishedPrint:
+ case PrinterCommunication.CommunicationStates.Connected:
+ eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
+ printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
+ break;
+
+ case PrinterCommunication.CommunicationStates.PreparingToPrint:
+ case PrinterCommunication.CommunicationStates.Printing:
+ switch (PrinterCommunication.Instance.PrintingState)
+ {
+ case PrinterCommunication.DetailedPrintingState.HomingAxis:
+ case PrinterCommunication.DetailedPrintingState.HeatingBed:
+ case PrinterCommunication.DetailedPrintingState.HeatingExtruder:
+ case PrinterCommunication.DetailedPrintingState.Printing:
+
+ eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
+ printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
+ break;
+
+ default:
+ throw new NotImplementedException();
+ }
+ break;
+
+ case PrinterCommunication.CommunicationStates.Paused:
+ eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
+ printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
+ break;
+
+ default:
+ throw new NotImplementedException();
+ }
+ }
+ }
+
+
+
+ event EventHandler unregisterEvents;
+ private void AddHandlers()
+ {
+ ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
+ PrinterCommunication.Instance.ConnectionStateChanged.RegisterEvent(onPrinterStatusChanged, ref unregisterEvents);
+ PrinterCommunication.Instance.EnableChanged.RegisterEvent(onPrinterStatusChanged, ref unregisterEvents);
+ }
+
+ private void onPrinterStatusChanged(object sender, EventArgs e)
+ {
+ SetVisibleControls();
+ this.Invalidate();
+ }
+
+ private void onThemeChanged(object sender, EventArgs e)
+ {
+ this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
+ SetVisibleControls();
+ this.Invalidate();
+ }
+
+ void enablePrintLeveling_Click(object sender, MouseEventArgs mouseEvent)
+ {
+ ActivePrinterProfile.Instance.DoPrintLeveling = true;
+ }
+
+ void disablePrintLeveling_Click(object sender, MouseEventArgs mouseEvent)
+ {
+ ActivePrinterProfile.Instance.DoPrintLeveling = false;
+ }
+
+ void SetPrintLevelButtonVisiblity()
+ {
+ enablePrintLevelingButton.Visible = !ActivePrinterProfile.Instance.DoPrintLeveling;
+ disablePrintLevelingButton.Visible = ActivePrinterProfile.Instance.DoPrintLeveling;
+
+ if (ActivePrinterProfile.Instance.DoPrintLeveling) {
+ printLevelingStatusLabel.Text = new LocalizedString ("Automatic Print Leveling (enabled)").Translated;
+ }
+ else
+ {
+ printLevelingStatusLabel.Text = new LocalizedString ("Automatic Print Leveling (disabled)").Translated;
+ }
+ }
+
+ public override void OnClosing(out bool CancelClose)
+ {
+ base.OnClosing(out CancelClose);
+ }
+
+ void runPrintLeveling_Click(object sender, MouseEventArgs mouseEvent)
+ {
+ OpenPrintLevelWizard();
+ }
+ }
+}
diff --git a/PrintLevelWizard.cs b/ConfigurationPage/PrintLevelWizard.cs
similarity index 100%
rename from PrintLevelWizard.cs
rename to ConfigurationPage/PrintLevelWizard.cs
diff --git a/CustomWidgets/DisableableWidget.cs b/CustomWidgets/DisableableWidget.cs
new file mode 100644
index 000000000..6b62297f8
--- /dev/null
+++ b/CustomWidgets/DisableableWidget.cs
@@ -0,0 +1,61 @@
+using MatterHackers.Agg;
+using MatterHackers.Agg.UI;
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace MatterHackers.MatterControl.CustomWidgets
+{
+ public class DisableableWidget : GuiWidget
+ {
+ public GuiWidget disableOverlay;
+
+ public DisableableWidget()
+ {
+ HAnchor = Agg.UI.HAnchor.ParentLeftRight;
+ VAnchor = Agg.UI.VAnchor.FitToChildren;
+
+ disableOverlay = new GuiWidget(HAnchor.ParentLeftRight, VAnchor.ParentBottomTop);
+ disableOverlay.Visible = false;
+ base.AddChild(disableOverlay);
+ }
+
+ public enum EnableLevel { Disabled, ConfigOnly, Enabled };
+
+ public void SetEnableLevel(EnableLevel enabledLevel)
+ {
+ disableOverlay.BackgroundColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryAccentColor, 160);
+ switch (enabledLevel)
+ {
+ case EnableLevel.Disabled:
+ disableOverlay.Margin = new BorderDouble(0);
+ disableOverlay.Visible = true;
+ break;
+
+ case EnableLevel.ConfigOnly:
+ disableOverlay.Margin = new BorderDouble(10, 10, 10, 15);
+ disableOverlay.Visible = true;
+ break;
+
+ case EnableLevel.Enabled:
+ disableOverlay.Visible = false;
+ break;
+ }
+ }
+
+ public override void AddChild(GuiWidget childToAdd, int indexInChildrenList = -1)
+ {
+ if (indexInChildrenList == -1)
+ {
+ // put it under the disableOverlay
+ base.AddChild(childToAdd, Children.Count - 1);
+ }
+ else
+ {
+ base.AddChild(childToAdd, indexInChildrenList);
+ }
+ }
+ }
+}
diff --git a/MainSlidePanel.cs b/MainSlidePanel.cs
index 84f502ffc..0b96a1eaf 100644
--- a/MainSlidePanel.cs
+++ b/MainSlidePanel.cs
@@ -226,7 +226,7 @@ namespace MatterHackers.MatterControl
// set the selected tab back to the one it was before we replace the control
this.advancedControlsTabControl.SelectTab(topTabIndex);
- // This is a hack to make the pannel remain on the screen. It would be great to debug it and understand
+ // This is a hack to make the panel remain on the screen. It would be great to debug it and understand
// why it does not work without this code in here.
RectangleDouble localBounds = this.LocalBounds;
this.LocalBounds = new RectangleDouble(0, 0, this.LocalBounds.Width - 1, 10);
@@ -258,12 +258,19 @@ namespace MatterHackers.MatterControl
manualPrinterControlsScrollArea.AnchorAll();
manualPrinterControlsScrollArea.AddChild(manualPrinterControls);
- string printerControlsLabel = new LocalizedString ("Printer Controls").Translated;
+ //Add the tab contents for 'Advanced Controls'
+ string printerControlsLabel = new LocalizedString ("Controls").Translated;
advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(manualPrinterControlsScrollArea, printerControlsLabel), 18,
ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+ string sliceSettingsLabel = new LocalizedString("Slice Settings").Translated;
sliceSettingsWidget = new SliceSettingsWidget(sliceSettingsUiState);
- advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(sliceSettingsWidget, new LocalizedString("Slice Settings").Translated), 18,
+ advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(sliceSettingsWidget, sliceSettingsLabel), 18,
+ ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+
+ string configurationLabel = new LocalizedString("Configuration").Translated;
+ ScrollableWidget configurationControls = new ConfigurationPage();
+ advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(configurationControls, configurationLabel), 18,
ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
return advancedControls;
@@ -322,8 +329,6 @@ namespace MatterHackers.MatterControl
addedUpdateMark.OriginRelativeParent = new Vector2(63, 10);
aboutTabView.AddChild(addedUpdateMark);
}
-#else
- AboutTabPage.Text = string.Format("About (!)");
#endif
}
else
diff --git a/MatterControl.csproj b/MatterControl.csproj
index 5feec7499..f360ca727 100644
--- a/MatterControl.csproj
+++ b/MatterControl.csproj
@@ -73,6 +73,8 @@
+
+
diff --git a/MatterControl.sln b/MatterControl.sln
index 10d7a9189..36b652ee6 100644
--- a/MatterControl.sln
+++ b/MatterControl.sln
@@ -56,166 +56,280 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TextCreator", "..\MatterCon
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OutlineCreator", "..\MatterControlPlugins\OutlineCreator\OutlineCreator.csproj", "{BEC6FD13-C765-4B90-836B-53823AC12E20}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarlinFirmwareUpdatePlugin", "..\MarlinFirmwareUpdatePlugin\MarlinFirmwareUpdatePlugin\MarlinFirmwareUpdatePlugin.csproj", "{239CC6B1-537C-4998-9AA9-3372A3464498}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0B8D6F56-BD7F-4426-B858-D9292B084656}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0B8D6F56-BD7F-4426-B858-D9292B084656}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0B8D6F56-BD7F-4426-B858-D9292B084656}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {0B8D6F56-BD7F-4426-B858-D9292B084656}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{0B8D6F56-BD7F-4426-B858-D9292B084656}.Debug|x86.ActiveCfg = Debug|Any CPU
{0B8D6F56-BD7F-4426-B858-D9292B084656}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0B8D6F56-BD7F-4426-B858-D9292B084656}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0B8D6F56-BD7F-4426-B858-D9292B084656}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {0B8D6F56-BD7F-4426-B858-D9292B084656}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{0B8D6F56-BD7F-4426-B858-D9292B084656}.Release|x86.ActiveCfg = Release|Any CPU
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Debug|x86.ActiveCfg = Debug|Any CPU
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AE37DE1F-22F7-49EE-8732-FC6BC8DC58D9}.Release|x86.ActiveCfg = Release|Any CPU
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Debug|x86.ActiveCfg = Debug|Any CPU
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{670BDDFF-927B-425D-9DD1-22ACB14356EB}.Release|x86.ActiveCfg = Release|Any CPU
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Debug|x86.ActiveCfg = Debug|Any CPU
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D3E41B4E-BFBB-44CA-94C8-95C00F754FDD}.Release|x86.ActiveCfg = Release|Any CPU
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Debug|x86.ActiveCfg = Debug|Any CPU
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{545B6912-77FF-4B34-BA76-6C3D6A32BE6A}.Release|x86.ActiveCfg = Release|Any CPU
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Debug|x86.ActiveCfg = Debug|Any CPU
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Any CPU.Build.0 = Release|Any CPU
+ {74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{74F6BB6C-9D02-4512-A59A-21940E35C532}.Release|x86.ActiveCfg = Release|Any CPU
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Debug|x86.ActiveCfg = Debug|Any CPU
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7E61A5BD-E78F-4B80-88C9-3821B4FA062E}.Release|x86.ActiveCfg = Release|Any CPU
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Debug|x86.ActiveCfg = Debug|Any CPU
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{86F6AAF2-9B50-40B8-A427-1897D76471C5}.Release|x86.ActiveCfg = Release|Any CPU
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Debug|x86.ActiveCfg = Debug|Any CPU
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}.Release|x86.ActiveCfg = Release|Any CPU
{C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Debug|x86.ActiveCfg = Debug|Any CPU
{C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C958F745-156E-4BDC-A24A-3721C7BE7B8A}.Release|x86.ActiveCfg = Release|Any CPU
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|Mixed Platforms.Build.0 = Debug|x86
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|x86.ActiveCfg = Debug|x86
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Debug|x86.Build.0 = Debug|x86
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|Mixed Platforms.Build.0 = Release|x86
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|x86.ActiveCfg = Release|x86
{F1653F20-D47D-4F29-8C55-3C835542AF5F}.Release|x86.Build.0 = Release|x86
{1E01ABE0-B494-4FE4-B0D6-540133286887}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E01ABE0-B494-4FE4-B0D6-540133286887}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1E01ABE0-B494-4FE4-B0D6-540133286887}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {1E01ABE0-B494-4FE4-B0D6-540133286887}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{1E01ABE0-B494-4FE4-B0D6-540133286887}.Debug|x86.ActiveCfg = Debug|Any CPU
{1E01ABE0-B494-4FE4-B0D6-540133286887}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E01ABE0-B494-4FE4-B0D6-540133286887}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1E01ABE0-B494-4FE4-B0D6-540133286887}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {1E01ABE0-B494-4FE4-B0D6-540133286887}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{1E01ABE0-B494-4FE4-B0D6-540133286887}.Release|x86.ActiveCfg = Release|Any CPU
{F67AE800-B0C7-42A8-836F-597B4E74591C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F67AE800-B0C7-42A8-836F-597B4E74591C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F67AE800-B0C7-42A8-836F-597B4E74591C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {F67AE800-B0C7-42A8-836F-597B4E74591C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F67AE800-B0C7-42A8-836F-597B4E74591C}.Debug|x86.ActiveCfg = Debug|Any CPU
{F67AE800-B0C7-42A8-836F-597B4E74591C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F67AE800-B0C7-42A8-836F-597B4E74591C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F67AE800-B0C7-42A8-836F-597B4E74591C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {F67AE800-B0C7-42A8-836F-597B4E74591C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F67AE800-B0C7-42A8-836F-597B4E74591C}.Release|x86.ActiveCfg = Release|Any CPU
{D3ABF72C-64C2-4E51-A119-E077210FA990}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3ABF72C-64C2-4E51-A119-E077210FA990}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D3ABF72C-64C2-4E51-A119-E077210FA990}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D3ABF72C-64C2-4E51-A119-E077210FA990}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{D3ABF72C-64C2-4E51-A119-E077210FA990}.Debug|x86.ActiveCfg = Debug|Any CPU
{D3ABF72C-64C2-4E51-A119-E077210FA990}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3ABF72C-64C2-4E51-A119-E077210FA990}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D3ABF72C-64C2-4E51-A119-E077210FA990}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D3ABF72C-64C2-4E51-A119-E077210FA990}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{D3ABF72C-64C2-4E51-A119-E077210FA990}.Release|x86.ActiveCfg = Release|Any CPU
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Debug|x86.ActiveCfg = Debug|Any CPU
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{990A9AD3-B6A4-407B-9DFC-9C722AF7C9B9}.Release|x86.ActiveCfg = Release|Any CPU
{A737BC76-165B-46C6-82B7-8871C7C92942}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A737BC76-165B-46C6-82B7-8871C7C92942}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A737BC76-165B-46C6-82B7-8871C7C92942}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A737BC76-165B-46C6-82B7-8871C7C92942}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A737BC76-165B-46C6-82B7-8871C7C92942}.Debug|x86.ActiveCfg = Debug|Any CPU
{A737BC76-165B-46C6-82B7-8871C7C92942}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A737BC76-165B-46C6-82B7-8871C7C92942}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A737BC76-165B-46C6-82B7-8871C7C92942}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A737BC76-165B-46C6-82B7-8871C7C92942}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A737BC76-165B-46C6-82B7-8871C7C92942}.Release|x86.ActiveCfg = Release|Any CPU
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CA96058C-1A37-465D-A357-D6D695B13D25}.Debug|x86.ActiveCfg = Debug|Any CPU
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CA96058C-1A37-465D-A357-D6D695B13D25}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CA96058C-1A37-465D-A357-D6D695B13D25}.Release|x86.ActiveCfg = Release|Any CPU
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Debug|x86.ActiveCfg = Debug|Any CPU
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{036BCCBA-52D8-457C-84AE-8821F209FE4A}.Release|x86.ActiveCfg = Release|Any CPU
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Debug|x86.ActiveCfg = Debug|Any CPU
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{9B062971-A88E-4A3D-B3C9-12B78D15FA66}.Release|x86.ActiveCfg = Release|Any CPU
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {DF6845CD-64C6-4263-8357-DA8066855739}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DF6845CD-64C6-4263-8357-DA8066855739}.Debug|x86.ActiveCfg = Debug|Any CPU
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DF6845CD-64C6-4263-8357-DA8066855739}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {DF6845CD-64C6-4263-8357-DA8066855739}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DF6845CD-64C6-4263-8357-DA8066855739}.Release|x86.ActiveCfg = Release|Any CPU
{291CD87C-2C58-4369-9D85-238C7EB31542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{291CD87C-2C58-4369-9D85-238C7EB31542}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {291CD87C-2C58-4369-9D85-238C7EB31542}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {291CD87C-2C58-4369-9D85-238C7EB31542}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{291CD87C-2C58-4369-9D85-238C7EB31542}.Debug|x86.ActiveCfg = Debug|Any CPU
{291CD87C-2C58-4369-9D85-238C7EB31542}.Release|Any CPU.ActiveCfg = Release|Any CPU
{291CD87C-2C58-4369-9D85-238C7EB31542}.Release|Any CPU.Build.0 = Release|Any CPU
+ {291CD87C-2C58-4369-9D85-238C7EB31542}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {291CD87C-2C58-4369-9D85-238C7EB31542}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{291CD87C-2C58-4369-9D85-238C7EB31542}.Release|x86.ActiveCfg = Release|Any CPU
{865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Debug|x86.ActiveCfg = Debug|Any CPU
{865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{865172A0-A1A9-49C2-9386-F2FDB4E141B7}.Release|x86.ActiveCfg = Release|Any CPU
{A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Debug|x86.ActiveCfg = Debug|Any CPU
{A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A526DC5D-65F3-461B-805F-D3AC9665F5C9}.Release|x86.ActiveCfg = Release|Any CPU
{F49EC1DD-D645-4709-8667-B57318AF67B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F49EC1DD-D645-4709-8667-B57318AF67B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F49EC1DD-D645-4709-8667-B57318AF67B0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {F49EC1DD-D645-4709-8667-B57318AF67B0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F49EC1DD-D645-4709-8667-B57318AF67B0}.Debug|x86.ActiveCfg = Debug|Any CPU
{F49EC1DD-D645-4709-8667-B57318AF67B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F49EC1DD-D645-4709-8667-B57318AF67B0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F49EC1DD-D645-4709-8667-B57318AF67B0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {F49EC1DD-D645-4709-8667-B57318AF67B0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F49EC1DD-D645-4709-8667-B57318AF67B0}.Release|x86.ActiveCfg = Release|Any CPU
{BEC6FD13-C765-4B90-836B-53823AC12E20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BEC6FD13-C765-4B90-836B-53823AC12E20}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEC6FD13-C765-4B90-836B-53823AC12E20}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {BEC6FD13-C765-4B90-836B-53823AC12E20}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{BEC6FD13-C765-4B90-836B-53823AC12E20}.Debug|x86.ActiveCfg = Debug|Any CPU
{BEC6FD13-C765-4B90-836B-53823AC12E20}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BEC6FD13-C765-4B90-836B-53823AC12E20}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEC6FD13-C765-4B90-836B-53823AC12E20}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {BEC6FD13-C765-4B90-836B-53823AC12E20}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{BEC6FD13-C765-4B90-836B-53823AC12E20}.Release|x86.ActiveCfg = Release|Any CPU
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Debug|x86.ActiveCfg = Debug|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Debug|x86.Build.0 = Debug|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Release|Any CPU.ActiveCfg = Release|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Release|Mixed Platforms.Build.0 = Release|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Release|x86.ActiveCfg = Release|x86
+ {239CC6B1-537C-4998-9AA9-3372A3464498}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/MatterControlApplication.cs b/MatterControlApplication.cs
index a57b70f8a..5a32db316 100644
--- a/MatterControlApplication.cs
+++ b/MatterControlApplication.cs
@@ -128,7 +128,6 @@ namespace MatterHackers.MatterControl
this.AddChild(allControls);
this.Padding = new BorderDouble(0); //To be re-enabled once native borders are turned off
- //allControls.AddChild(CreateMenues());
allControls.AddChild(new ActionBarPlus());
allControls.AddChild(MainSlidePanel.Instance);
diff --git a/PartsSheet.cs b/PrintQueue/PartsSheet.cs
similarity index 100%
rename from PartsSheet.cs
rename to PrintQueue/PartsSheet.cs
diff --git a/ActivePrinterProfile.cs b/PrinterCommunication/ActivePrinterProfile.cs
similarity index 100%
rename from ActivePrinterProfile.cs
rename to PrinterCommunication/ActivePrinterProfile.cs
diff --git a/PrinterCommunication.cs b/PrinterCommunication/PrinterCommunication.cs
similarity index 100%
rename from PrinterCommunication.cs
rename to PrinterCommunication/PrinterCommunication.cs
diff --git a/PrinterControls/ManualPrinterControls.cs b/PrinterControls/ManualPrinterControls.cs
index 723361e41..5e9192e8e 100644
--- a/PrinterControls/ManualPrinterControls.cs
+++ b/PrinterControls/ManualPrinterControls.cs
@@ -38,6 +38,7 @@ using MatterHackers.Agg.UI;
using MatterHackers.VectorMath;
using MatterHackers.Agg.Image;
using MatterHackers.MatterControl.DataStorage;
+using MatterHackers.MatterControl.CustomWidgets;
using MatterHackers.Localizations;
namespace MatterHackers.MatterControl
@@ -53,56 +54,7 @@ namespace MatterHackers.MatterControl
}
}
- public class DisableableWidget : GuiWidget
- {
- public GuiWidget disableOverlay;
-
- public DisableableWidget()
- {
- HAnchor = Agg.UI.HAnchor.ParentLeftRight;
- VAnchor = Agg.UI.VAnchor.FitToChildren;
-
- disableOverlay = new GuiWidget(HAnchor.ParentLeftRight, VAnchor.ParentBottomTop);
- disableOverlay.Visible = false;
- base.AddChild(disableOverlay);
- }
-
- public enum EnableLevel { Disabled, ConfigOnly, Enabled };
-
- public void SetEnableLevel(EnableLevel enabledLevel)
- {
- disableOverlay.BackgroundColor = new RGBA_Bytes(ActiveTheme.Instance.PrimaryAccentColor, 160);
- switch (enabledLevel)
- {
- case EnableLevel.Disabled:
- disableOverlay.Margin = new BorderDouble(0);
- disableOverlay.Visible = true;
- break;
-
- case EnableLevel.ConfigOnly:
- disableOverlay.Margin = new BorderDouble(10, 10, 10, 15);
- disableOverlay.Visible = true;
- break;
-
- case EnableLevel.Enabled:
- disableOverlay.Visible = false;
- break;
- }
- }
-
- public override void AddChild(GuiWidget childToAdd, int indexInChildrenList = -1)
- {
- if (indexInChildrenList == -1)
- {
- // put it under the disableOverlay
- base.AddChild(childToAdd, Children.Count - 1);
- }
- else
- {
- base.AddChild(childToAdd, indexInChildrenList);
- }
- }
- }
+
public class ManualPrinterControls : GuiWidget
{
diff --git a/FieldValidation.cs b/Utilities/FieldValidation.cs
similarity index 100%
rename from FieldValidation.cs
rename to Utilities/FieldValidation.cs
diff --git a/ManifestFileHandler.cs b/Utilities/ManifestFileHandler.cs
similarity index 100%
rename from ManifestFileHandler.cs
rename to Utilities/ManifestFileHandler.cs
diff --git a/ProjectFileHandler.cs b/Utilities/ProjectFileHandler.cs
similarity index 100%
rename from ProjectFileHandler.cs
rename to Utilities/ProjectFileHandler.cs
diff --git a/TupleList.cs b/Utilities/TupleList.cs
similarity index 100%
rename from TupleList.cs
rename to Utilities/TupleList.cs
diff --git a/JsonResponseDictionary.cs b/Utilities/WebUtilities/JsonResponseDictionary.cs
similarity index 100%
rename from JsonResponseDictionary.cs
rename to Utilities/WebUtilities/JsonResponseDictionary.cs
diff --git a/RequestManager.cs b/Utilities/WebUtilities/RequestManager.cs
similarity index 100%
rename from RequestManager.cs
rename to Utilities/WebUtilities/RequestManager.cs