Added device type to Printer model. Refactoring changes.

This commit is contained in:
kevinepope 2014-06-22 20:53:38 -07:00
parent 7e72699e94
commit c593396647
7 changed files with 205 additions and 37 deletions

View file

@ -54,6 +54,7 @@ namespace MatterHackers.MatterControl
{
static ApplicationWidget globalInstance;
public RootedObjectEventHandler ReloadPanelTrigger = new RootedObjectEventHandler();
public RootedObjectEventHandler CloudSyncStatusChanged = new RootedObjectEventHandler();
public SlicePresetsWindow EditSlicePresetsWindow { get; set;}
@ -125,5 +126,10 @@ namespace MatterHackers.MatterControl
{
ReloadPanelTrigger.CallEvents(this, null);
}
public void ChangeCloudSyncStatus()
{
CloudSyncStatusChanged.CallEvents(this, null);
}
}
}

View file

@ -60,10 +60,13 @@ namespace MatterHackers.MatterControl
Button enablePrintLevelingButton;
Button disablePrintLevelingButton;
Button enableCloudMonitorButton;
Button disableCloudMonitorButton;
DisableableWidget eePromControlsContainer;
DisableableWidget terminalCommunicationsContainer;
DisableableWidget printLevelContainer;
DisableableWidget cloudMonitorContainer;
DisableableWidget printLevelingContainer;
TextImageButtonFactory textImageButtonFactory = new TextImageButtonFactory();
@ -100,6 +103,7 @@ namespace MatterHackers.MatterControl
mainLayoutContainer.AddChild(terminalControls);
AddPrintLevelingControls(mainLayoutContainer);
AddCloudMonitorControls(mainLayoutContainer);
mainLayoutContainer.AddChild(settingsControls);
//mainLayoutContainer.AddChild(releaseControls);
@ -275,12 +279,12 @@ namespace MatterHackers.MatterControl
UserSettings.Instance.set("UpdateFeedType", releaseCode);
}
}
private void AddTerminalControls(FlowLayoutWidget controlsTopToBottomLayout)
{
GroupBox terminalControlsContainer;
terminalControlsContainer = new GroupBox(LocalizedString.Get("Communications"));
terminalControlsContainer.Margin = new BorderDouble(0);
terminalControlsContainer.TextColor = ActiveTheme.Instance.PrimaryTextColor;
terminalControlsContainer.BorderColor = ActiveTheme.Instance.PrimaryTextColor;
@ -320,8 +324,100 @@ namespace MatterHackers.MatterControl
terminalCommunicationsContainer.AddChild(terminalControlsContainer);
controlsTopToBottomLayout.AddChild(terminalCommunicationsContainer);
}
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;
}
public override void OnClosed(EventArgs e)
{
if (unregisterEvents != null)
{
unregisterEvents(this, null);
}
base.OnClosed(e);
}
TextWidget cloudMonitorStatusLabel;
private void AddCloudMonitorControls(FlowLayoutWidget controlsTopToBottomLayout)
{
cloudMonitorContainer = new DisableableWidget();
cloudMonitorContainer.AddChild(CreateCloudMonitorControls());
controlsTopToBottomLayout.AddChild(cloudMonitorContainer);
}
private GuiWidget CreateCloudMonitorControls()
{
GroupBox cloudMonitorContainer = new GroupBox(LocalizedString.Get("Cloud Services"));
cloudMonitorContainer.Margin = new BorderDouble(0);
cloudMonitorContainer.TextColor = ActiveTheme.Instance.PrimaryTextColor;
cloudMonitorContainer.BorderColor = ActiveTheme.Instance.PrimaryTextColor;
cloudMonitorContainer.HAnchor = Agg.UI.HAnchor.ParentLeftRight;
cloudMonitorContainer.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;
Agg.Image.ImageBuffer cloudMonitorImage = new Agg.Image.ImageBuffer();
ImageIO.LoadImageData(Path.Combine(ApplicationDataStorage.Instance.ApplicationStaticDataPath, "Icons", "PrintStatusControls", "cloud-24x24.png"), cloudMonitorImage);
if (!ActiveTheme.Instance.IsDarkTheme)
{
InvertLightness.DoInvertLightness(cloudMonitorImage);
}
ImageWidget levelingIcon = new ImageWidget(cloudMonitorImage);
levelingIcon.Margin = new BorderDouble(right: 6);
enableCloudMonitorButton = textImageButtonFactory.Generate("Enable".Localize().ToUpper());
enableCloudMonitorButton.Margin = new BorderDouble(left: 6);
enableCloudMonitorButton.VAnchor = VAnchor.ParentCenter;
enableCloudMonitorButton.Click += new ButtonBase.ButtonEventHandler(enableCloudMonitor_Click);
disableCloudMonitorButton = textImageButtonFactory.Generate("Disable".Localize().ToUpper());
disableCloudMonitorButton.Margin = new BorderDouble(left: 6);
disableCloudMonitorButton.VAnchor = VAnchor.ParentCenter;
disableCloudMonitorButton.Click += new ButtonBase.ButtonEventHandler(disableCloudMonitor_Click);
cloudMonitorStatusLabel = new TextWidget("");
cloudMonitorStatusLabel.AutoExpandBoundsToText = true;
cloudMonitorStatusLabel.TextColor = ActiveTheme.Instance.PrimaryTextColor;
cloudMonitorStatusLabel.VAnchor = VAnchor.ParentCenter;
GuiWidget hSpacer = new GuiWidget();
hSpacer.HAnchor = HAnchor.ParentLeftRight;
buttonBar.AddChild(levelingIcon);
buttonBar.AddChild(cloudMonitorStatusLabel);
buttonBar.AddChild(hSpacer);
buttonBar.AddChild(enableCloudMonitorButton);
buttonBar.AddChild(disableCloudMonitorButton);
ActivePrinterProfile.Instance.DoPrintLevelingChanged.RegisterEvent((sender, e) =>
{
SetCloudButtonVisiblity();
}, ref unregisterEvents);
cloudMonitorContainer.AddChild(buttonBar);
}
SetCloudButtonVisiblity();
return cloudMonitorContainer;
}
string noEepromMappingMessage = "Oops! There is no eeprom mapping for your printer's firmware.".Localize();
string noEepromMappingTitle = "Warning no eeprom mapping".Localize();
string groupBoxTitle = "EEProm Settings".Localize();
@ -385,34 +481,16 @@ namespace MatterHackers.MatterControl
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;
}
SystemWindow printLevelWizardWindow;
public override void OnClosed(EventArgs e)
{
if (unregisterEvents != null)
{
unregisterEvents(this, null);
}
base.OnClosed(e);
}
SystemWindow printLevelWizardWindow;
TextWidget printLevelingStatusLabel;
private void AddPrintLevelingControls(FlowLayoutWidget controlsTopToBottomLayout)
{
printLevelContainer = new DisableableWidget();
printLevelContainer.AddChild(CreatePrintLevelingControlsContainer());
controlsTopToBottomLayout.AddChild(printLevelContainer);
printLevelingContainer = new DisableableWidget();
printLevelingContainer.AddChild(CreatePrintLevelingControlsContainer());
controlsTopToBottomLayout.AddChild(printLevelingContainer);
}
EditLevelingSettingsWindow editLevelingSettingsWindow;
@ -536,12 +614,13 @@ namespace MatterHackers.MatterControl
private void SetVisibleControls()
{
cloudMonitorContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
if (ActivePrinterProfile.Instance.ActivePrinter == null)
{
// no printer selected
eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
printLevelingContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
}
else // we at least have a printer selected
{
@ -553,14 +632,14 @@ namespace MatterHackers.MatterControl
case PrinterConnectionAndCommunication.CommunicationStates.AttemptingToConnect:
case PrinterConnectionAndCommunication.CommunicationStates.FailedToConnect:
eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
printLevelingContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
break;
case PrinterConnectionAndCommunication.CommunicationStates.FinishedPrint:
case PrinterConnectionAndCommunication.CommunicationStates.Connected:
eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
printLevelingContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
break;
@ -574,7 +653,7 @@ namespace MatterHackers.MatterControl
case PrinterConnectionAndCommunication.DetailedPrintingState.Printing:
eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
printLevelingContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
break;
@ -585,7 +664,7 @@ namespace MatterHackers.MatterControl
case PrinterConnectionAndCommunication.CommunicationStates.Paused:
eePromControlsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
printLevelContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
printLevelingContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
terminalCommunicationsContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
break;
@ -616,16 +695,46 @@ namespace MatterHackers.MatterControl
//this.Invalidate();
}
void enablePrintLeveling_Click(object sender, MouseEventArgs mouseEvent)
void enableCloudMonitor_Click(object sender, MouseEventArgs mouseEvent)
{
ActivePrinterProfile.Instance.DoPrintLeveling = true;
UserSettings.Instance.set("CloudMonitorEnabled","true");
ApplicationWidget.Instance.ChangeCloudSyncStatus();
ApplicationWidget.Instance.ReloadAdvancedControlsPanel();
}
void disablePrintLeveling_Click(object sender, MouseEventArgs mouseEvent)
void disableCloudMonitor_Click(object sender, MouseEventArgs mouseEvent)
{
ActivePrinterProfile.Instance.DoPrintLeveling = false;
UserSettings.Instance.set("CloudMonitorEnabled", "false");
ApplicationWidget.Instance.ChangeCloudSyncStatus();
ApplicationWidget.Instance.ReloadAdvancedControlsPanel();
}
void enablePrintLeveling_Click(object sender, MouseEventArgs mouseEvent)
{
ActivePrinterProfile.Instance.DoPrintLeveling = true;
}
void disablePrintLeveling_Click(object sender, MouseEventArgs mouseEvent)
{
ActivePrinterProfile.Instance.DoPrintLeveling = false;
}
void SetCloudButtonVisiblity()
{
bool cloudMontitorEnabled = (UserSettings.Instance.get("CloudMonitorEnabled") == "true");
enableCloudMonitorButton.Visible = !cloudMontitorEnabled;
disableCloudMonitorButton.Visible = cloudMontitorEnabled;
if (cloudMontitorEnabled)
{
cloudMonitorStatusLabel.Text = LocalizedString.Get("Cloud Monitoring (enabled)");
}
else
{
cloudMonitorStatusLabel.Text = LocalizedString.Get("Cloud Monitoring (disabled)");
}
}
void SetPrintLevelButtonVisiblity()
{
enablePrintLevelingButton.Visible = !ActivePrinterProfile.Instance.DoPrintLeveling;

View file

@ -300,6 +300,8 @@ namespace MatterHackers.MatterControl.DataStorage
public string ComPort { get; set; }
public string BaudRate { get; set; }
public bool AutoConnectFlag { get; set; } //Auto connect to printer (if available)
public string DeviceToken { get; set; }
public string DeviceType { get; set; }
// all the data about print leveling
public bool DoPrintLeveling { get; set; }

View file

@ -1,6 +1,6 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterControl", "MatterControl.csproj", "{0B8D6F56-BD7F-4426-B858-D9292B084656}"
ProjectSection(ProjectDependencies) = postProject
{657DBC6D-C3EA-4398-A3FA-DDB73C14F71B} = {657DBC6D-C3EA-4398-A3FA-DDB73C14F71B}
@ -68,6 +68,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MatterRepair", "..\MatterRe
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlatformAbstract", "..\agg-sharp\PlatformAbstract\PlatformAbstract.csproj", "{3E4AABA8-D85F-4922-88C6-5C1B2D2308FB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CloudServices", "..\CloudServicesPlugin\CloudServices\CloudServices.csproj", "{6782BF37-8139-4DC6-885E-98D22D1FB258}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -480,6 +482,18 @@ Global
{3E4AABA8-D85F-4922-88C6-5C1B2D2308FB}.Release64|Any CPU.Build.0 = Release64|Any CPU
{3E4AABA8-D85F-4922-88C6-5C1B2D2308FB}.Release64|x64.ActiveCfg = Release64|Any CPU
{3E4AABA8-D85F-4922-88C6-5C1B2D2308FB}.Release64|x86.ActiveCfg = Release64|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Debug|x64.ActiveCfg = Debug|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Debug|x86.ActiveCfg = Debug|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release|Any CPU.Build.0 = Release|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release|x64.ActiveCfg = Release|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release|x86.ActiveCfg = Release|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release64|Any CPU.ActiveCfg = Release|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release64|Any CPU.Build.0 = Release|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release64|x64.ActiveCfg = Release|Any CPU
{6782BF37-8139-4DC6-885E-98D22D1FB258}.Release64|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -491,6 +505,7 @@ Global
{BEC6FD13-C765-4B90-836B-53823AC12E20} = {DA2BE4E5-5FB2-4C74-9170-0D2513AAFC84}
{A3680C51-A549-4D1F-AEA5-3931EA755E9A} = {DA2BE4E5-5FB2-4C74-9170-0D2513AAFC84}
{DA4A9C04-C54A-4571-B6B0-957C7E6E868B} = {DA2BE4E5-5FB2-4C74-9170-0D2513AAFC84}
{6782BF37-8139-4DC6-885E-98D22D1FB258} = {DA2BE4E5-5FB2-4C74-9170-0D2513AAFC84}
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = MatterControl.csproj

View file

@ -138,6 +138,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication
public RootedObjectEventHandler PositionRead = new RootedObjectEventHandler();
public RootedObjectEventHandler ReadLine = new RootedObjectEventHandler();
public RootedObjectEventHandler WroteLine = new RootedObjectEventHandler();
public RootedObjectEventHandler UpdateEventHook = new RootedObjectEventHandler();
FoundStringStartsWithCallbacks ReadLineStartCallBacks = new FoundStringStartsWithCallbacks();
FoundStringContainsCallbacks ReadLineContainsCallBacks = new FoundStringContainsCallbacks();
@ -154,6 +155,8 @@ namespace MatterHackers.MatterControl.PrinterCommunication
Stopwatch timeSinceLastReadAnything = new Stopwatch();
Stopwatch timeHaveBeenWaitingForOK = new Stopwatch();
Stopwatch timeSinceUpdateEvent = new Stopwatch();
int secondsBetweenUpdateEvent = 300;
public enum CommunicationStates { Disconnected, AttemptingToConnect, FailedToConnect, Connected, PreparingToPrint, Printing, Paused, FinishedPrint, Disconnecting, ConnectionLost };
CommunicationStates communicationState = CommunicationStates.Disconnected;
@ -606,6 +609,22 @@ namespace MatterHackers.MatterControl.PrinterCommunication
}
}
public int TotalLayersInPrint
{
get
{
try
{
int layerCount = loadedGCode.NumChangesInZ;
return layerCount;
}
catch
{
return -1;
}
}
}
public double RatioIntoCurrentLayer
{
get
@ -713,6 +732,14 @@ namespace MatterHackers.MatterControl.PrinterCommunication
temperatureRequestTimer.Restart();
}
if (timeSinceUpdateEvent.Elapsed.Seconds > secondsBetweenUpdateEvent)
{
UpdateEventHook.CallEvents(null, null);
timeSinceUpdateEvent.Restart();
}
bool waited30SeconsdForOk = timeHaveBeenWaitingForOK.Elapsed.Seconds > 30; // waited for more than 30 seconds
bool noResponseFor5Seconds = timeSinceLastReadAnything.Elapsed.Seconds > 5;
bool waitedToLongForOK = waited30SeconsdForOk && noResponseFor5Seconds;

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

View file

@ -2406,3 +2406,12 @@ Translated:Has Heated Bed
English:Has SD Card Reader
Translated:Has SD Card Reader
English:Cloud Services
Translated:Cloud Services
English:Cloud Monitoring (disabled)
Translated:Cloud Monitoring (disabled)
English:Cloud Monitoring (enabled)
Translated:Cloud Monitoring (enabled)