diff --git a/AboutPage.cs b/AboutPage/AboutPage.cs
similarity index 99%
rename from AboutPage.cs
rename to AboutPage/AboutPage.cs
index 927bf8747..0e605132f 100644
--- a/AboutPage.cs
+++ b/AboutPage/AboutPage.cs
@@ -332,7 +332,7 @@ namespace MatterHackers.MatterControl
checkUpdateLink.Visible = false;
}
- MainSlidePanel.Instance.SetUpdateNotification(this, null);
+ //MainSlidePanel.Instance.SetUpdateNotification(this, null);
}
void onVersionRequestFailed(object sender, EventArgs e)
@@ -454,7 +454,7 @@ namespace MatterHackers.MatterControl
learnMoreLink.Margin = new BorderDouble(0, 5);
topToBottom.AddChild(learnMoreLink);
- TextWidget copyrightText = new TextWidget(string.Format(new LocalizedString("Copyright © 2013 MatterHackers, Inc.").Translated), textColor: offWhite);
+ TextWidget copyrightText = new TextWidget(string.Format(new LocalizedString("Copyright © 2014 MatterHackers, Inc.").Translated), textColor: offWhite);
copyrightText.HAnchor = Agg.UI.HAnchor.ParentCenter;
topToBottom.AddChild(copyrightText);
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..d82dc42ed
--- /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.PrimaryBackgroundColor;
+
+ 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/ClickWidget.cs b/CustomWidgets/ClickWidget.cs
index 28c82a180..2265f9f46 100644
--- a/CustomWidgets/ClickWidget.cs
+++ b/CustomWidgets/ClickWidget.cs
@@ -22,6 +22,20 @@ namespace MatterHackers.MatterControl
private int borderWidth = 0;
private RGBA_Bytes borderColor = RGBA_Bytes.Black;
+ public ClickWidget()
+ : base()
+ {
+
+ }
+
+ public ClickWidget(double width, double height)
+ : base(width, height)
+ {
+
+ }
+
+
+
public int BorderWidth
{
get { return borderWidth; }
diff --git a/CustomWidgets/DisableableWidget.cs b/CustomWidgets/DisableableWidget.cs
new file mode 100644
index 000000000..ba1bd8d0e
--- /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.PrimaryBackgroundColor, 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..57423f6bb 100644
--- a/MainSlidePanel.cs
+++ b/MainSlidePanel.cs
@@ -52,7 +52,7 @@ using MatterHackers.Localizations;
namespace MatterHackers.MatterControl
{
- public class MainSlidePanel : SlidePanel
+ public class MainSlidePanel : GuiWidget
{
SimpleTextTabWidget aboutTabView;
static MainSlidePanel globalInstance;
@@ -61,10 +61,81 @@ namespace MatterHackers.MatterControl
SliceSettingsWidget sliceSettingsWidget;
TabControl advancedControls;
private delegate void ReloadPanel();
+ event EventHandler unregisterEvents;
+ public RootedObjectEventHandler ReloadPanelTrigger = new RootedObjectEventHandler();
+ public RootedObjectEventHandler SetUpdateNotificationTrigger = new RootedObjectEventHandler();
+
+
+ public MainSlidePanel()
+ {
+
+ }
+
+ public void AddElements()
+ {
+ //this.AddChild(new MainSlide());
+ this.AddChild(new WidescreenPanel());
+ this.AnchorAll();
+ SetUpdateNotification(this, null);
+ }
+
+ public static MainSlidePanel Instance
+ {
+ get
+ {
+ if (globalInstance == null)
+ {
+ globalInstance = new MainSlidePanel();
+ globalInstance.AddElements();
+ }
+ return globalInstance;
+ }
+ }
+
+ public override void OnClosed(EventArgs e)
+ {
+ if (unregisterEvents != null)
+ {
+ unregisterEvents(this, null);
+ }
+ base.OnClosed(e);
+ }
+
+ void DoNotChangePanel()
+ {
+ //Empty function used as placeholder
+ }
+
+
+ public void SetUpdateNotification(object sender, EventArgs widgetEvent)
+ {
+ SetUpdateNotificationTrigger.CallEvents(this, null);
+ }
+
+ public void ReloadBackPanel()
+ {
+ ReloadPanelTrigger.CallEvents(this, null);
+ }
+
+ void OnReloadBackPanel(EventArgs e)
+ {
+ ReloadPanelTrigger.CallEvents(this, e);
+ }
+ }
+
+ public class MainSlide : SlidePanel
+ {
+ SimpleTextTabWidget aboutTabView;
+ TabControl advancedControlsTabControl;
+ TabControl mainControlsTabControl;
+ SliceSettingsWidget sliceSettingsWidget;
+ TabControl advancedControls;
+ private delegate void ReloadPanel();
public TabPage QueueTabPage;
public TabPage AboutTabPage;
TextImageButtonFactory advancedControlsButtonFactory = new TextImageButtonFactory();
RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected;
+ static MainSlide globalInstance;
GuiWidget LeftPanel
{
@@ -76,8 +147,13 @@ namespace MatterHackers.MatterControl
get { return GetPannel(1); }
}
- public MainSlidePanel()
+ public MainSlide()
: base(2)
+ {
+ AddElements();
+ }
+
+ public void AddElements()
{
ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent(LoadSettingsOnPrinterChanged, ref unregisterEvents);
@@ -91,25 +167,26 @@ namespace MatterHackers.MatterControl
mainControlsTabControl.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
mainControlsTabControl.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0);
mainControlsTabControl.TabBar.Margin = new BorderDouble(0, 0);
- mainControlsTabControl.TabBar.Padding = new BorderDouble(0, 2);
+ mainControlsTabControl.TabBar.Padding = new BorderDouble(0, 2);
QueueTabPage = new TabPage(new QueueControlsWidget(), "Queue");
NumQueueItemsChanged(this, null);
mainControlsTabControl.AddTab(new SimpleTextTabWidget(QueueTabPage, 18,
ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+
//mainControlsTabControl.AddTab(new SimpleTextTabWidget(new TabPage(new GuiWidget(), "History"), 18,
// ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
- string libraryTabLabel = new LocalizedString("Library").Translated;
+ string libraryTabLabel = new LocalizedString("Library").Translated;
- mainControlsTabControl.AddTab(new SimpleTextTabWidget(new TabPage(new PrintLibraryWidget(),libraryTabLabel), 18,
- ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+ mainControlsTabControl.AddTab(new SimpleTextTabWidget(new TabPage(new PrintLibraryWidget(), libraryTabLabel), 18,
+ ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
//mainControlsTabControl.AddTab(new SimpleTextTabWidget(new TabPage(new ToolsWidget(), "Tools"), 18,
- //ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+ //ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
- AboutTabPage = new TabPage(new AboutPage(),new LocalizedString("About").Translated);
+ AboutTabPage = new TabPage(new AboutPage(), new LocalizedString("About").Translated);
aboutTabView = new SimpleTextTabWidget(AboutTabPage, 18,
ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes());
mainControlsTabControl.AddTab(aboutTabView);
@@ -125,8 +202,8 @@ namespace MatterHackers.MatterControl
advancedControlsButtonFactory.disabledBorderColor = ActiveTheme.Instance.PrimaryBackgroundColor;
advancedControlsButtonFactory.invertImageLocation = true;
- Button advancedControlsLinkButton = advancedControlsButtonFactory.Generate(new LocalizedString("Advanced\nControls").Translated, "icon_arrow_right_32x32.png");
- advancedControlsLinkButton.Margin = new BorderDouble(right:3);
+ Button advancedControlsLinkButton = advancedControlsButtonFactory.Generate(new LocalizedString("Advanced\nControls").Translated, "icon_arrow_right_32x32.png");
+ advancedControlsLinkButton.Margin = new BorderDouble(right: 3);
advancedControlsLinkButton.VAnchor = VAnchor.ParentBottom;
advancedControlsLinkButton.Cursor = Cursors.Hand;
advancedControlsLinkButton.Click += new ButtonBase.ButtonEventHandler(AdvancedControlsButton_Click);
@@ -141,7 +218,7 @@ namespace MatterHackers.MatterControl
// and add it
this.LeftPanel.AddChild(mainControlsTabControl);
- SetUpdateNotification(this, null);
+
}
// do the back panel
@@ -155,19 +232,19 @@ namespace MatterHackers.MatterControl
void AdvancedControlsButton_Click(object sender, MouseEventArgs mouseEvent)
{
- if (MainSlidePanel.Instance.PannelIndex == 0)
+ if (this.PannelIndex == 0)
{
- MainSlidePanel.Instance.PannelIndex = 1;
+ this.PannelIndex = 1;
}
else
{
- MainSlidePanel.Instance.PannelIndex = 0;
+ this.PannelIndex = 0;
}
}
void onMouseEnterBoundsAdvancedControlsLink(Object sender, EventArgs e)
{
- HelpTextWidget.Instance.ShowHoverText(new LocalizedString("View Manual Printer Controls and Slicing Settings").Translated);
+ HelpTextWidget.Instance.ShowHoverText(new LocalizedString("View Manual Printer Controls and Slicing Settings").Translated);
}
void onMouseLeaveBoundsAdvancedControlsLink(Object sender, EventArgs e)
@@ -177,7 +254,7 @@ namespace MatterHackers.MatterControl
void onMouseEnterBoundsPrintQueueLink(Object sender, EventArgs e)
{
- HelpTextWidget.Instance.ShowHoverText(new LocalizedString("View Queue and Library").Translated);
+ HelpTextWidget.Instance.ShowHoverText(new LocalizedString("View Queue and Library").Translated);
}
void onMouseLeaveBoundsPrintQueueLink(Object sender, EventArgs e)
@@ -185,13 +262,13 @@ namespace MatterHackers.MatterControl
HelpTextWidget.Instance.HideHoverText();
}
- public static MainSlidePanel Instance
+ public static MainSlide Instance
{
get
{
if (globalInstance == null)
{
- globalInstance = new MainSlidePanel();
+ globalInstance = new MainSlide();
}
return globalInstance;
}
@@ -226,7 +303,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);
@@ -239,10 +316,10 @@ namespace MatterHackers.MatterControl
advancedControls.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
advancedControls.TabBar.BorderColor = RGBA_Bytes.White;
advancedControls.TabBar.Margin = new BorderDouble(0, 0);
- advancedControls.TabBar.Padding = new BorderDouble(0,2);
+ advancedControls.TabBar.Padding = new BorderDouble(0, 2);
advancedControlsButtonFactory.invertImageLocation = false;
- Button advancedControlsLinkButton = advancedControlsButtonFactory.Generate(new LocalizedString("Print\nQueue").Translated, "icon_arrow_left_32x32.png");
+ Button advancedControlsLinkButton = advancedControlsButtonFactory.Generate(new LocalizedString("Print\nQueue").Translated, "icon_arrow_left_32x32.png");
advancedControlsLinkButton.Margin = new BorderDouble(right: 3);
advancedControlsLinkButton.VAnchor = VAnchor.ParentBottom;
advancedControlsLinkButton.Cursor = Cursors.Hand;
@@ -258,12 +335,19 @@ namespace MatterHackers.MatterControl
manualPrinterControlsScrollArea.AnchorAll();
manualPrinterControlsScrollArea.AddChild(manualPrinterControls);
- string printerControlsLabel = new LocalizedString ("Printer Controls").Translated;
- advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(manualPrinterControlsScrollArea, printerControlsLabel), 18,
+ //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;
@@ -290,6 +374,8 @@ namespace MatterHackers.MatterControl
ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
PrintQueue.PrintQueueControl.Instance.ItemAdded.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
PrintQueue.PrintQueueControl.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
+ MainSlidePanel.Instance.SetUpdateNotificationTrigger.RegisterEvent(OnSetUpdateNotification, ref unregisterEvents);
+ MainSlidePanel.Instance.ReloadPanelTrigger.RegisterEvent(ReloadBackPanel, ref unregisterEvents);
}
class NotificationWidget : GuiWidget
@@ -310,7 +396,7 @@ namespace MatterHackers.MatterControl
}
GuiWidget addedUpdateMark = null;
- public void SetUpdateNotification(object sender, EventArgs widgetEvent)
+ public void OnSetUpdateNotification(object sender, EventArgs widgetEvent)
{
if (this.UpdateIsAvailable() || UpdateControl.NeedToCheckForUpdateFirstTimeEver)
{
@@ -322,8 +408,6 @@ namespace MatterHackers.MatterControl
addedUpdateMark.OriginRelativeParent = new Vector2(63, 10);
aboutTabView.AddChild(addedUpdateMark);
}
-#else
- AboutTabPage.Text = string.Format("About (!)");
#endif
}
else
@@ -338,9 +422,9 @@ namespace MatterHackers.MatterControl
void NumQueueItemsChanged(object sender, EventArgs widgetEvent)
{
- string queueStringBeg = new LocalizedString("Queue").Translated;
- string queueString = string.Format("{1} ({0})",PrintQueue.PrintQueueControl.Instance.Count, queueStringBeg);
- QueueTabPage.Text = string.Format(queueString, PrintQueue.PrintQueueControl.Instance.Count);
+ string queueStringBeg = new LocalizedString("Queue").Translated;
+ string queueString = string.Format("{1} ({0})", PrintQueue.PrintQueueControl.Instance.Count, queueStringBeg);
+ QueueTabPage.Text = string.Format(queueString, PrintQueue.PrintQueueControl.Instance.Count);
}
private void onThemeChanged(object sender, EventArgs e)
@@ -349,7 +433,7 @@ namespace MatterHackers.MatterControl
this.advancedControls.Invalidate();
}
- public void ReloadBackPanel()
+ public void ReloadBackPanel(object sender, EventArgs widgetEvent)
{
sliceSettingsUiState = new SliceSettingsWidget.UiState(sliceSettingsWidget);
UiThread.RunOnIdle(DoChangePanel);
diff --git a/MatterControl.csproj b/MatterControl.csproj
index 5feec7499..f9c21cf68 100644
--- a/MatterControl.csproj
+++ b/MatterControl.csproj
@@ -72,11 +72,13 @@
-
+
+
+
-
+
@@ -104,8 +106,8 @@
-
-
+
+
ExportQueueItemWindow.cs
@@ -127,15 +129,15 @@
-
+
Code
-
-
-
+
+
+
@@ -165,9 +167,9 @@
-
+
-
+
@@ -177,14 +179,14 @@
-
+
-
+
diff --git a/MatterControlApplication.cs b/MatterControlApplication.cs
index a57b70f8a..1cfe0f9c8 100644
--- a/MatterControlApplication.cs
+++ b/MatterControlApplication.cs
@@ -128,8 +128,8 @@ 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(WidescreenPanel.Instance);
+ //allControls.AddChild(new ActionBarPlus());
allControls.AddChild(MainSlidePanel.Instance);
#if false // this is to test freeing gcodefile memory
diff --git a/PartPreviewWindow/View3DTransfromPart.cs b/PartPreviewWindow/View3DTransfromPart.cs
index 14f46a164..8788f00cc 100644
--- a/PartPreviewWindow/View3DTransfromPart.cs
+++ b/PartPreviewWindow/View3DTransfromPart.cs
@@ -290,9 +290,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
centerPartPreviewAndControls.AddChild(viewArea);
mainContainerTopToBottom.AddChild(centerPartPreviewAndControls);
- meshViewerWidget.LoadMesh(printItemWrapper.FileLocation);
- meshViewerWidget.LoadDone += new EventHandler(meshViewerWidget_LoadDone);
-
FlowLayoutWidget buttonBottomPanel = new FlowLayoutWidget(FlowDirection.LeftToRight);
buttonBottomPanel.HAnchor = HAnchor.ParentLeftRight;
buttonBottomPanel.Padding = new BorderDouble(3, 3);
@@ -413,6 +410,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
AddViewControls();
AddHandlers();
+
+ // don't load the mesh until we get all the rest of the interface built
+ meshViewerWidget.LoadMesh(printItemWrapper.FileLocation);
+ meshViewerWidget.LoadDone += new EventHandler(meshViewerWidget_LoadDone);
}
private void MakeCopyOfMesh()
diff --git a/PartsSheet.cs b/PrintQueue/PartsSheet.cs
similarity index 100%
rename from PartsSheet.cs
rename to PrintQueue/PartsSheet.cs
diff --git a/PrintQueue/PrintItemWrapper.cs b/PrintQueue/PrintItemWrapper.cs
index 1e6b69313..78b122ed2 100644
--- a/PrintQueue/PrintItemWrapper.cs
+++ b/PrintQueue/PrintItemWrapper.cs
@@ -189,16 +189,24 @@ namespace MatterHackers.MatterControl.PrintQueue
public string GetGCodePathAndFileName()
{
- if (Path.GetExtension(FileLocation).ToUpper() == ".GCODE")
+ if (FileLocation.Trim() != "")
{
- return FileLocation;
+
+ if (Path.GetExtension(FileLocation).ToUpper() == ".GCODE")
+ {
+ return FileLocation;
+ }
+
+ string engineString = ((int)ActivePrinterProfile.Instance.ActiveSliceEngineType).ToString();
+
+ string gcodeFileName = this.StlFileHashCode.ToString() + "_" + engineString + "_" + ActiveSliceSettings.Instance.GetHashCode().ToString();
+ string gcodePathAndFileName = Path.Combine(DataStorage.ApplicationDataStorage.Instance.GCodeOutputPath, gcodeFileName + ".gcode");
+ return gcodePathAndFileName;
+ }
+ else
+ {
+ return null;
}
-
- string engineString = ((int)ActivePrinterProfile.Instance.ActiveSliceEngineType).ToString();
-
- string gcodeFileName = this.StlFileHashCode.ToString() + "_" + engineString + "_" + ActiveSliceSettings.Instance.GetHashCode().ToString();
- string gcodePathAndFileName = Path.Combine(DataStorage.ApplicationDataStorage.Instance.GCodeOutputPath, gcodeFileName + ".gcode");
- return gcodePathAndFileName;
}
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 79330bc5a..6dda87404 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
{
@@ -219,7 +171,6 @@ namespace MatterHackers.MatterControl
rightColumnContainer.VAnchor |= VAnchor.ParentTop;
AddFanControls(rightColumnContainer);
- AddEePromControls(rightColumnContainer);
centerControlsContainer.AddChild(rightColumnContainer);
}
@@ -239,10 +190,6 @@ namespace MatterHackers.MatterControl
AddAdjustmentControls(controlsTopToBottomLayout);
- printLevelContainer = new DisableableWidget();
- printLevelContainer.AddChild(CreatePrintLevelingControlsContainer());
- controlsTopToBottomLayout.AddChild(printLevelContainer);
-
this.AddChild(controlsTopToBottomLayout);
AddHandlers();
SetVisibleControls();
@@ -742,7 +689,7 @@ namespace MatterHackers.MatterControl
private void SetDisplayAttributes()
{
- this.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
+ this.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
this.textImageButtonFactory.normalFillColor = RGBA_Bytes.White;
this.textImageButtonFactory.disabledFillColor = RGBA_Bytes.White;
@@ -768,7 +715,6 @@ namespace MatterHackers.MatterControl
eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
tuningAdjustmentControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
- printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
sdCardManagerContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
macroControls.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
}
@@ -785,10 +731,8 @@ namespace MatterHackers.MatterControl
bedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
movementControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
fanControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
- eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
tuningAdjustmentControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
- printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
sdCardManagerContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
macroControls.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
break;
@@ -799,9 +743,7 @@ namespace MatterHackers.MatterControl
bedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
movementControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
fanControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
- eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
- printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
sdCardManagerContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
macroControls.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
tuningAdjustmentControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
@@ -819,10 +761,8 @@ namespace MatterHackers.MatterControl
bedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
movementControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.ConfigOnly);
fanControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
- eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
tuningAdjustmentControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
- printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
sdCardManagerContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
macroControls.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
break;
@@ -837,10 +777,8 @@ namespace MatterHackers.MatterControl
bedTemperatureControlWidget.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
movementControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
fanControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
- eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
tuningAdjustmentControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
- printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
sdCardManagerContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
macroControls.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
break;
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
diff --git a/WidescreenPanel.cs b/WidescreenPanel.cs
index 1d72727a8..3658f4d71 100644
--- a/WidescreenPanel.cs
+++ b/WidescreenPanel.cs
@@ -46,109 +46,99 @@ using MatterHackers.MatterControl.SlicerConfiguration;
using MatterHackers.MatterControl.PrintLibrary;
using MatterHackers.MatterControl.DataStorage;
using MatterHackers.Localizations;
+using MatterHackers.MatterControl.PartPreviewWindow;
namespace MatterHackers.MatterControl
-{
- public class WidescreenPanel : Splitter
- {
- SimpleTextTabWidget aboutTabView;
+{
+ public class WidescreenPanel : FlowLayoutWidget
+ {
static WidescreenPanel globalInstance;
TabControl advancedControlsTabControl;
- TabControl mainControlsTabControl;
SliceSettingsWidget sliceSettingsWidget;
TabControl advancedControls;
- private delegate void ReloadPanel();
- public TabPage QueueTabPage;
public TabPage AboutTabPage;
TextImageButtonFactory advancedControlsButtonFactory = new TextImageButtonFactory();
RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected;
+ SliceSettingsWidget.UiState sliceSettingsUiState;
+ FlowLayoutWidget ColumnOne;
+ FlowLayoutWidget ColumnTwo;
+ int ColumnTwoMinWidth = 1390;
+ FlowLayoutWidget ColumnThree;
+ int ColumnThreeMinWidth = 990;
+ View3DTransformPart part3DView;
+ GcodeViewBasic partGcodeView;
+
+ ClickWidget RightBorderLine;
+ ClickWidget LeftBorderLine;
+
+ bool ColThreeIsHidden = false;
public WidescreenPanel()
- : base()
+ : base(FlowDirection.LeftToRight)
{
ActivePrinterProfile.Instance.ActivePrinterChanged.RegisterEvent(LoadSettingsOnPrinterChanged, ref unregisterEvents);
-
- // do the front panel stuff
{
- // first add the print progress bar
- this.Panel1.AddChild(new PrintProgressBar());
- // construct the main controls tab control
- mainControlsTabControl = new TabControl();
- mainControlsTabControl.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
- mainControlsTabControl.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0);
- mainControlsTabControl.TabBar.Margin = new BorderDouble(0, 0);
- mainControlsTabControl.TabBar.Padding = new BorderDouble(0, 2);
+ //PrintQueueControl.Instance.Initialize();
+ BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
+ Padding = new BorderDouble(4);
- QueueTabPage = new TabPage(new QueueControlsWidget(), "Queue");
- NumQueueItemsChanged(this, null);
+ ColumnOne = new FlowLayoutWidget(FlowDirection.TopToBottom);
+ ColumnTwo = new FlowLayoutWidget(FlowDirection.TopToBottom);
+ ColumnThree = new FlowLayoutWidget(FlowDirection.TopToBottom);
- mainControlsTabControl.AddTab(new SimpleTextTabWidget(QueueTabPage, 18,
- ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
- //mainControlsTabControl.AddTab(new SimpleTextTabWidget(new TabPage(new GuiWidget(), "History"), 18,
- // ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
- mainControlsTabControl.AddTab(new SimpleTextTabWidget(new TabPage(new PrintLibraryWidget(), "Library"), 18,
- ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+ ColumnOne.VAnchor = VAnchor.ParentBottomTop;
+ ColumnOne.AddChild(new ActionBarPlus());
+ ColumnOne.AddChild(new PrintProgressBar());
+ ColumnOne.AddChild(new QueueTab());
+ ColumnOne.Width = 480; //Ordering here matters - must go after children are added
+
+ //ColumnOne.Padding = new BorderDouble(4);
+ //ColumnTwo.Padding = new BorderDouble(4, 0);
+ //ColumnThree.Padding = new BorderDouble(4);
- AboutTabPage = new TabPage(new AboutPage(), "About");
- aboutTabView = new SimpleTextTabWidget(AboutTabPage, 18,
- ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes());
- mainControlsTabControl.AddTab(aboutTabView);
+ LeftBorderLine = CreateBorderLine();
+ RightBorderLine = CreateBorderLine();
+ LoadColumnTwo();
+
+ ColumnThree.VAnchor = VAnchor.ParentBottomTop;
+
+
+ {
+ advancedControlsTabControl = CreateNewAdvancedControlsTab(new SliceSettingsWidget.UiState());
+ ColumnThree.AddChild(advancedControlsTabControl);
+ ColumnThree.Width = 590; //Ordering here matters - must go after children are added
+ }
- advancedControlsButtonFactory.normalTextColor = RGBA_Bytes.White;
- advancedControlsButtonFactory.hoverTextColor = RGBA_Bytes.White;
- advancedControlsButtonFactory.pressedTextColor = RGBA_Bytes.White;
- advancedControlsButtonFactory.fontSize = 10;
-
- advancedControlsButtonFactory.disabledTextColor = RGBA_Bytes.LightGray;
- advancedControlsButtonFactory.disabledFillColor = ActiveTheme.Instance.PrimaryBackgroundColor;
- advancedControlsButtonFactory.disabledBorderColor = ActiveTheme.Instance.PrimaryBackgroundColor;
-
- advancedControlsButtonFactory.invertImageLocation = true;
- Button advancedControlsLinkButton = advancedControlsButtonFactory.Generate("Advanced\nControls", "icon_arrow_right_32x32.png");
- advancedControlsLinkButton.Margin = new BorderDouble(right: 3);
- advancedControlsLinkButton.VAnchor = VAnchor.ParentBottom;
- advancedControlsLinkButton.Cursor = Cursors.Hand;
- advancedControlsLinkButton.Click += new ButtonBase.ButtonEventHandler(AdvancedControlsButton_Click);
- advancedControlsLinkButton.MouseEnterBounds += new EventHandler(onMouseEnterBoundsAdvancedControlsLink);
- advancedControlsLinkButton.MouseLeaveBounds += new EventHandler(onMouseLeaveBoundsAdvancedControlsLink);
-
- GuiWidget hSpacer = new GuiWidget();
- hSpacer.HAnchor = HAnchor.ParentLeftRight;
-
- mainControlsTabControl.TabBar.AddChild(hSpacer);
- //mainControlsTabControl.TabBar.AddChild(advancedControlsLinkButton);
- // and add it
- this.Panel1.AddChild(mainControlsTabControl);
-
- SetUpdateNotification(this, null);
+ AddChild(ColumnOne);
+ AddChild(LeftBorderLine);
+ AddChild(ColumnTwo);
+ AddChild(RightBorderLine);
+ AddChild(ColumnThree);
}
- // do the back panel
- {
- advancedControlsTabControl = CreateNewAdvancedControlsTab(new SliceSettingsWidget.UiState());
- this.Panel2.AddChild(advancedControlsTabControl);
- //this.Panel2.AddChild(new PrintProgressBar());
- }
-
-
-
+ AnchorAll();
AddHandlers();
+ SetVisibleStatus();
+
}
- void AdvancedControlsButton_Click(object sender, MouseEventArgs mouseEvent)
+ private static ClickWidget CreateBorderLine()
{
- if (MainSlidePanel.Instance.PannelIndex == 0)
- {
- MainSlidePanel.Instance.PannelIndex = 1;
- }
- else
- {
- MainSlidePanel.Instance.PannelIndex = 0;
- }
+ ClickWidget topLine = new ClickWidget(3, 1);
+ topLine.BackgroundColor = new RGBA_Bytes(200,200,200);
+ topLine.VAnchor = VAnchor.ParentBottomTop;
+ topLine.Margin = new BorderDouble(8, 0);
+ topLine.Cursor = Cursors.Hand;
+ return topLine;
+ }
+
+ void onBoundsChanges(Object sender, EventArgs e)
+ {
+ SetVisibleStatus();
}
void onMouseEnterBoundsAdvancedControlsLink(Object sender, EventArgs e)
@@ -197,62 +187,249 @@ namespace MatterHackers.MatterControl
//Empty function used as placeholder
}
- SliceSettingsWidget.UiState sliceSettingsUiState;
+
void DoChangePanel(object state)
{
// remember which tab we were on
int topTabIndex = this.advancedControlsTabControl.SelectedTabIndex;
// remove the advance control and replace it with new ones build for the selected printer
- int advancedControlsWidgetIndex = Panel2.GetChildIndex(this.advancedControlsTabControl);
- Panel2.RemoveChild(advancedControlsWidgetIndex);
+ int advancedControlsWidgetIndex = ColumnThree.GetChildIndex(this.advancedControlsTabControl);
+ ColumnThree.RemoveChild(advancedControlsWidgetIndex);
this.advancedControlsTabControl = CreateNewAdvancedControlsTab(sliceSettingsUiState);
- Panel2.AddChild(this.advancedControlsTabControl, advancedControlsWidgetIndex);
+ ColumnThree.AddChild(this.advancedControlsTabControl, advancedControlsWidgetIndex);
+ ColumnThree.Width = 590;
// 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
- // 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);
- this.LocalBounds = localBounds;
}
+
TabControl CreateNewAdvancedControlsTab(SliceSettingsWidget.UiState sliceSettingsUiState)
{
advancedControls = new TabControl();
- advancedControls.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
+ advancedControls.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
advancedControls.TabBar.BorderColor = RGBA_Bytes.White;
advancedControls.TabBar.Margin = new BorderDouble(0, 0);
advancedControls.TabBar.Padding = new BorderDouble(0, 2);
advancedControlsButtonFactory.invertImageLocation = false;
- Button advancedControlsLinkButton = advancedControlsButtonFactory.Generate("Print\nQueue", "icon_arrow_left_32x32.png");
- advancedControlsLinkButton.Margin = new BorderDouble(right: 3);
- advancedControlsLinkButton.VAnchor = VAnchor.ParentBottom;
- advancedControlsLinkButton.Cursor = Cursors.Hand;
- advancedControlsLinkButton.Click += new ButtonBase.ButtonEventHandler(AdvancedControlsButton_Click);
- advancedControlsLinkButton.MouseEnterBounds += new EventHandler(onMouseEnterBoundsPrintQueueLink);
- advancedControlsLinkButton.MouseLeaveBounds += new EventHandler(onMouseLeaveBoundsPrintQueueLink);
-
- //advancedControls.TabBar.AddChild(advancedControlsLinkButton);
GuiWidget manualPrinterControls = new ManualPrinterControls();
ScrollableWidget manualPrinterControlsScrollArea = new ScrollableWidget(true);
manualPrinterControlsScrollArea.ScrollArea.HAnchor |= Agg.UI.HAnchor.ParentLeftRight;
manualPrinterControlsScrollArea.AnchorAll();
manualPrinterControlsScrollArea.AddChild(manualPrinterControls);
- advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(manualPrinterControlsScrollArea, "Printer Controls"), 18,
+
+ //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, sliceSettingsLabel), 18,
ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
- sliceSettingsWidget = new SliceSettingsWidget(sliceSettingsUiState);
- advancedControls.AddTab(new SimpleTextTabWidget(new TabPage(sliceSettingsWidget, "Slice Settings"), 18,
+ 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;
}
+ event EventHandler unregisterEvents;
+ void AddHandlers()
+ {
+ ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
+ PrinterCommunication.Instance.ActivePrintItemChanged.RegisterEvent(onActivePrintItemChanged, ref unregisterEvents);
+ MainSlidePanel.Instance.ReloadPanelTrigger.RegisterEvent(ReloadBackPanel, ref unregisterEvents);
+ this.BoundsChanged += new EventHandler(onBoundsChanges);
+ RightBorderLine.Click += new ClickWidget.ButtonEventHandler(onRightBorderClick); ;
+
+ }
+
+ void onRightBorderClick(object sender, EventArgs e)
+ {
+ ColumnThree.Visible = !ColumnThree.Visible;
+ ColThreeIsHidden = !ColumnThree.Visible;
+
+ }
+
+ void onActivePrintItemChanged(object sender, EventArgs e)
+ {
+ LoadColumnTwo();
+ }
+
+ void LoadColumnTwo()
+ {
+ ColumnTwo.RemoveAllChildren();
+
+ double buildHeight = ActiveSliceSettings.Instance.BuildHeight;
+ part3DView = new View3DTransformPart(PrinterCommunication.Instance.ActivePrintItem, new Vector3(ActiveSliceSettings.Instance.BedSize, buildHeight), ActiveSliceSettings.Instance.BedShape);
+ part3DView.Margin = new BorderDouble(bottom: 4);
+ part3DView.AnchorAll();
+
+ partGcodeView = new GcodeViewBasic(PrinterCommunication.Instance.ActivePrintItem, ActiveSliceSettings.Instance.GetBedSize, ActiveSliceSettings.Instance.GetBedCenter);
+ partGcodeView.AnchorAll();
+
+ ColumnTwo.AddChild(part3DView);
+ ColumnTwo.AddChild(partGcodeView);
+ ColumnTwo.AnchorAll();
+ SetVisibleStatus();
+ }
+
+ void SetVisibleStatus()
+ {
+ bool ColThreeVisible = ColumnThree.Visible;
+
+ if (this.Width < ColumnThreeMinWidth)
+ {
+ ColumnThree.Visible = false;
+ ColumnTwo.Visible = false;
+
+ ColumnOne.RemoveAllChildren();
+ ColumnOne.AddChild(new ActionBarPlus());
+ ColumnOne.AddChild(new MainSlide());
+ ColumnOne.AnchorAll();
+ ColumnOne.Visible = true;
+
+ LeftBorderLine.Visible = false;
+ RightBorderLine.Visible = false;
+
+ }
+ else if (this.Width < ColumnTwoMinWidth)
+ {
+
+ ColumnTwo.Visible = false;
+ ColumnThree.Visible = !ColThreeIsHidden;
+
+ ColumnOne.RemoveAllChildren();
+ ColumnOne.AddChild(new ActionBarPlus());
+ ColumnOne.AddChild(new PrintProgressBar());
+ ColumnOne.AddChild(new QueueTab());
+ ColumnOne.AnchorAll();
+ ColumnOne.Visible = true;
+
+ LeftBorderLine.Visible = false;
+ RightBorderLine.Visible = true;
+ }
+ else
+ {
+ ColumnThree.Visible = !ColThreeIsHidden;
+ ColumnTwo.Visible = true;
+
+ ColumnOne.RemoveAllChildren();
+ ColumnOne.AddChild(new ActionBarPlus());
+ ColumnOne.AddChild(new PrintProgressBar());
+ ColumnOne.AddChild(new QueueTab());
+ ColumnOne.HAnchor = Agg.UI.HAnchor.None;
+ ColumnOne.Width = 480;
+ ColumnOne.Visible = true;
+
+ LeftBorderLine.Visible = true;
+ RightBorderLine.Visible = true;
+ }
+ }
+
+
+ private void onThemeChanged(object sender, EventArgs e)
+ {
+ //this.advancedControls.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
+ this.advancedControls.Invalidate();
+ }
+
+ public void ReloadBackPanel(object sender, EventArgs widgetEvent)
+ {
+ sliceSettingsUiState = new SliceSettingsWidget.UiState(sliceSettingsWidget);
+ UiThread.RunOnIdle(DoChangePanel);
+ }
+
+ public void LoadSettingsOnPrinterChanged(object sender, EventArgs e)
+ {
+ ActiveSliceSettings.Instance.LoadSettingsForPrinter();
+ MainSlidePanel.Instance.ReloadBackPanel();
+ }
+ }
+
+ class QueueTab : TabControl
+ {
+
+ TabPage QueueTabPage;
+ TabPage LibraryTabPage;
+ TabPage AboutTabPage;
+ SimpleTextTabWidget AboutTabView;
+ RGBA_Bytes unselectedTextColor = ActiveTheme.Instance.TabLabelUnselected;
+ GuiWidget addedUpdateMark = null;
+
+ public QueueTab()
+ {
+ this.TabBar.BackgroundColor = ActiveTheme.Instance.PrimaryBackgroundColor;
+ this.TabBar.BorderColor = new RGBA_Bytes(0, 0, 0, 0);
+ this.TabBar.Margin = new BorderDouble(0, 0);
+ this.TabBar.Padding = new BorderDouble(0, 2);
+
+ QueueTabPage = new TabPage(new QueueControlsWidget(), "Queue");
+ this.AddTab(new SimpleTextTabWidget(QueueTabPage, 18,
+ ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+
+ LibraryTabPage = new TabPage(new PrintLibraryWidget(), "Library");
+ this.AddTab(new SimpleTextTabWidget(LibraryTabPage, 18,
+ ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes()));
+
+ AboutTabPage = new TabPage(new AboutPage(), "About");
+ AboutTabView = new SimpleTextTabWidget(AboutTabPage, 18,
+ ActiveTheme.Instance.PrimaryTextColor, new RGBA_Bytes(), unselectedTextColor, new RGBA_Bytes());
+ this.AddTab(AboutTabView);
+
+ NumQueueItemsChanged(this, null);
+ SetUpdateNotification(this, null);
+
+ }
+
+ void NumQueueItemsChanged(object sender, EventArgs widgetEvent)
+ {
+ string queueStringBeg = new LocalizedString("Queue").Translated;
+ string queueString = string.Format("{1} ({0})", PrintQueue.PrintQueueControl.Instance.Count, queueStringBeg);
+ QueueTabPage.Text = string.Format(queueString, PrintQueue.PrintQueueControl.Instance.Count);
+ }
+
+ event EventHandler unregisterEvents;
+ void AddHandlers()
+ {
+ PrintQueue.PrintQueueControl.Instance.ItemAdded.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
+ PrintQueue.PrintQueueControl.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
+ MainSlidePanel.Instance.SetUpdateNotificationTrigger.RegisterEvent(SetUpdateNotification, ref unregisterEvents);
+
+ }
+
+ public void SetUpdateNotification(object sender, EventArgs widgetEvent)
+ {
+ if (this.UpdateIsAvailable() || UpdateControl.NeedToCheckForUpdateFirstTimeEver)
+ {
+#if true
+ if (addedUpdateMark == null)
+ {
+ UpdateControl.NeedToCheckForUpdateFirstTimeEver = false;
+ addedUpdateMark = new NotificationWidget();
+ addedUpdateMark.OriginRelativeParent = new Vector2(63, 10);
+ AboutTabView.AddChild(addedUpdateMark);
+ }
+#else
+ AboutTabPage.Text = string.Format("About (!)");
+#endif
+ }
+ else
+ {
+ if (addedUpdateMark != null)
+ {
+ addedUpdateMark.Visible = false;
+ }
+ AboutTabPage.Text = string.Format("About");
+ }
+ }
+
bool UpdateIsAvailable()
{
string currentBuildToken = ApplicationSettings.Instance.get("CurrentBuildToken");
@@ -267,81 +444,21 @@ namespace MatterHackers.MatterControl
return true;
}
}
+ }
- event EventHandler unregisterEvents;
- void AddHandlers()
+ class NotificationWidget : GuiWidget
+ {
+ public NotificationWidget()
+ : base(12, 12)
{
- ActiveTheme.Instance.ThemeChanged.RegisterEvent(onThemeChanged, ref unregisterEvents);
- PrintQueue.PrintQueueControl.Instance.ItemAdded.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
- PrintQueue.PrintQueueControl.Instance.ItemRemoved.RegisterEvent(NumQueueItemsChanged, ref unregisterEvents);
}
- class NotificationWidget : GuiWidget
+ public override void OnDraw(Graphics2D graphics2D)
{
- public NotificationWidget()
- : base(12, 12)
- {
- }
-
- public override void OnDraw(Graphics2D graphics2D)
- {
- graphics2D.Circle(Width / 2, Height / 2, Width / 2, RGBA_Bytes.White);
- graphics2D.Circle(Width / 2, Height / 2, Width / 2 - 1, RGBA_Bytes.Red);
- graphics2D.FillRectangle(Width / 2 - 1, Height / 2 - 3, Width / 2 + 1, Height / 2 + 3, RGBA_Bytes.White);
- //graphics2D.DrawString("1", Width / 2, Height / 2 + 1, 8, Justification.Center, Baseline.BoundsCenter, RGBA_Bytes.White);
- base.OnDraw(graphics2D);
- }
- }
-
- GuiWidget addedUpdateMark = null;
- public void SetUpdateNotification(object sender, EventArgs widgetEvent)
- {
- if (this.UpdateIsAvailable() || UpdateControl.NeedToCheckForUpdateFirstTimeEver)
- {
-#if true
- if (addedUpdateMark == null)
- {
- UpdateControl.NeedToCheckForUpdateFirstTimeEver = false;
- addedUpdateMark = new NotificationWidget();
- addedUpdateMark.OriginRelativeParent = new Vector2(63, 10);
- aboutTabView.AddChild(addedUpdateMark);
- }
-#else
- AboutTabPage.Text = string.Format("About (!)");
-#endif
- }
- else
- {
- if (addedUpdateMark != null)
- {
- addedUpdateMark.Visible = false;
- }
- AboutTabPage.Text = string.Format("About");
- }
- }
-
- void NumQueueItemsChanged(object sender, EventArgs widgetEvent)
- {
- string queueString = "Queue ({0})";
- QueueTabPage.Text = string.Format(queueString, PrintQueue.PrintQueueControl.Instance.Count);
- }
-
- private void onThemeChanged(object sender, EventArgs e)
- {
- this.advancedControls.BackgroundColor = ActiveTheme.Instance.PrimaryAccentColor;
- this.advancedControls.Invalidate();
- }
-
- public void ReloadBackPanel()
- {
- sliceSettingsUiState = new SliceSettingsWidget.UiState(sliceSettingsWidget);
- UiThread.RunOnIdle(DoChangePanel);
- }
-
- public void LoadSettingsOnPrinterChanged(object sender, EventArgs e)
- {
- ActiveSliceSettings.Instance.LoadSettingsForPrinter();
- MainSlidePanel.Instance.ReloadBackPanel();
+ graphics2D.Circle(Width / 2, Height / 2, Width / 2, RGBA_Bytes.White);
+ graphics2D.Circle(Width / 2, Height / 2, Width / 2 - 1, RGBA_Bytes.Red);
+ graphics2D.FillRectangle(Width / 2 - 1, Height / 2 - 3, Width / 2 + 1, Height / 2 + 3, RGBA_Bytes.White);
+ base.OnDraw(graphics2D);
}
}
}