Merge pull request #315 from jlewin/development

Socketeer updates
This commit is contained in:
Lars Brubaker 2015-07-01 18:52:57 -07:00
commit 31731972d0
5 changed files with 119 additions and 99 deletions

View file

@ -253,7 +253,7 @@ namespace MatterHackers.MatterControl.ContactForm
submitButton.Visible = false;
postRequest.RequestSucceeded += new EventHandler(onPostRequestSucceeded);
postRequest.RequestFailed += new EventHandler(onPostRequestFailed);
postRequest.RequestFailed += onPostRequestFailed;
postRequest.Request();
}
}
@ -264,7 +264,7 @@ namespace MatterHackers.MatterControl.ContactForm
doneButton.Visible = true;
}
private void onPostRequestFailed(object sender, EventArgs e)
private void onPostRequestFailed(object sender, ResponseErrorEventArgs e)
{
submissionStatus.Text = LocalizedString.Get("Sorry! We weren't able to submit your request.");
doneButton.Visible = true;

View file

@ -170,7 +170,7 @@ namespace MatterHackers.MatterControl
SetUpdateStatus(UpdateStatusStates.CheckingForUpdate);
RequestLatestVersion request = new RequestLatestVersion();
request.RequestSucceeded += new EventHandler(onVersionRequestSucceeded);
request.RequestFailed += new EventHandler(onVersionRequestFailed);
request.RequestFailed += onVersionRequestFailed;
request.Request();
}
}
@ -243,7 +243,7 @@ namespace MatterHackers.MatterControl
return null;
}
private void onVersionRequestFailed(object sender, EventArgs e)
private void onVersionRequestFailed(object sender, ResponseErrorEventArgs e)
{
SetUpdateStatus(UpdateStatusStates.UpToDate);
}

View file

@ -12,24 +12,11 @@ namespace MatterHackers.MatterControl.ConfigurationPage
{
public class CloudSettingsWidget : SettingsViewBase
{
private DisableableWidget cloudMonitorContainer;
private DisableableWidget notificationSettingsContainer;
private Button enableCloudMonitorButton;
private Button disableCloudMonitorButton;
private Button goCloudMonitoringWebPageButton;
private Button cloudMonitorInstructionsLink;
private TextWidget cloudMonitorStatusLabel;
private Button configureNotificationSettingsButton;
public CloudSettingsWidget()
: base(LocalizedString.Get("Cloud Settings"))
{
cloudMonitorContainer = new DisableableWidget();
cloudMonitorContainer.AddChild(GetCloudMonitorControls());
mainContainer.AddChild(cloudMonitorContainer);
mainContainer.AddChild(new HorizontalLine(separatorLineColor));
notificationSettingsContainer = new DisableableWidget();
@ -38,7 +25,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage
AddChild(mainContainer);
SetCloudButtonVisiblity();
AddHandlers();
}
@ -120,45 +106,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage
InvertLightness.DoInvertLightness(cloudMonitorImage);
}
ImageWidget cloudMonitoringIcon = new ImageWidget(cloudMonitorImage);
cloudMonitoringIcon.Margin = new BorderDouble(right: 6);
enableCloudMonitorButton = textImageButtonFactory.Generate("Enable".Localize().ToUpper());
enableCloudMonitorButton.Margin = new BorderDouble(left: 6);
enableCloudMonitorButton.VAnchor = VAnchor.ParentCenter;
enableCloudMonitorButton.Click += new EventHandler(enableCloudMonitor_Click);
disableCloudMonitorButton = textImageButtonFactory.Generate("Disable".Localize().ToUpper());
disableCloudMonitorButton.Margin = new BorderDouble(left: 6);
disableCloudMonitorButton.VAnchor = VAnchor.ParentCenter;
disableCloudMonitorButton.Click += new EventHandler(disableCloudMonitor_Click);
cloudMonitorInstructionsLink = linkButtonFactory.Generate("More Info".Localize().ToUpper());
cloudMonitorInstructionsLink.VAnchor = VAnchor.ParentCenter;
cloudMonitorInstructionsLink.Click += new EventHandler(goCloudMonitoringInstructionsButton_Click);
cloudMonitorInstructionsLink.Margin = new BorderDouble(left: 6);
goCloudMonitoringWebPageButton = linkButtonFactory.Generate("View Status".Localize().ToUpper());
goCloudMonitoringWebPageButton.VAnchor = VAnchor.ParentCenter;
goCloudMonitoringWebPageButton.Click += new EventHandler(goCloudMonitoringWebPageButton_Click);
goCloudMonitoringWebPageButton.Margin = new BorderDouble(left: 6);
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(cloudMonitoringIcon);
buttonBar.AddChild(cloudMonitorStatusLabel);
buttonBar.AddChild(cloudMonitorInstructionsLink);
buttonBar.AddChild(goCloudMonitoringWebPageButton);
buttonBar.AddChild(hSpacer);
buttonBar.AddChild(enableCloudMonitorButton);
buttonBar.AddChild(disableCloudMonitorButton);
return buttonBar;
}
@ -183,11 +130,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage
ImageWidget levelingIcon = new ImageWidget(notificationSettingsImage);
levelingIcon.Margin = new BorderDouble(right: 6, bottom: 6);
configureNotificationSettingsButton = textImageButtonFactory.Generate("Configure".Localize().ToUpper());
configureNotificationSettingsButton.Margin = new BorderDouble(left: 6);
configureNotificationSettingsButton.VAnchor = VAnchor.ParentCenter;
configureNotificationSettingsButton.Click += new EventHandler(configureNotificationSettingsButton_Click);
notificationSettingsLabel = new TextWidget(LocalizedString.Get("Notification Settings"));
notificationSettingsLabel.AutoExpandBoundsToText = true;
notificationSettingsLabel.TextColor = ActiveTheme.Instance.PrimaryTextColor;
@ -209,29 +151,11 @@ namespace MatterHackers.MatterControl.ConfigurationPage
buttonRow.AddChild(levelingIcon);
buttonRow.AddChild(notificationSettingsLabel);
buttonRow.AddChild(new HorizontalSpacer());
buttonRow.AddChild(configureNotificationSettingsButton);
buttonRow.AddChild(levelingSwitchContainer);
return buttonRow;
}
private void SetCloudButtonVisiblity()
{
bool cloudMontitorEnabled = (PrinterSettings.Instance.get("CloudMonitorEnabled") == "true");
enableCloudMonitorButton.Visible = !cloudMontitorEnabled;
disableCloudMonitorButton.Visible = cloudMontitorEnabled;
goCloudMonitoringWebPageButton.Visible = cloudMontitorEnabled;
if (cloudMontitorEnabled)
{
cloudMonitorStatusLabel.Text = LocalizedString.Get("Cloud Monitoring (enabled)");
}
else
{
cloudMonitorStatusLabel.Text = LocalizedString.Get("Cloud Monitoring (disabled)");
}
}
public override void OnClosed(EventArgs e)
{
if (unregisterEvents != null)
@ -251,7 +175,6 @@ namespace MatterHackers.MatterControl.ConfigurationPage
private void onPrinterStatusChanged(object sender, EventArgs e)
{
SetVisibleControls();
this.Invalidate();
}
@ -265,17 +188,5 @@ namespace MatterHackers.MatterControl.ConfigurationPage
}
}
private void SetVisibleControls()
{
if (ActivePrinterProfile.Instance.ActivePrinter == null)
{
// no printer selected
cloudMonitorContainer.SetEnableLevel(DisableableWidget.EnableLevel.Disabled);
}
else // we at least have a printer selected
{
cloudMonitorContainer.SetEnableLevel(DisableableWidget.EnableLevel.Enabled);
}
}
}
}

View file

@ -2056,7 +2056,7 @@ namespace MatterHackers.MatterControl.PrinterCommunication
}
}
private void CancelPrint()
public void CancelPrint()
{
using (TimedLock.Lock(this, "CancelingPrint"))
{

View file

@ -34,6 +34,114 @@ using System.ComponentModel;
namespace MatterHackers.MatterControl.VersionManagement
{
public class ResponseErrorEventArgs : EventArgs
{
public JsonResponseDictionary ResponseValues { get; set; }
}
public class ResponseSuccessEventArgs<T> : EventArgs
{
public T ResponseItem { get; set; }
}
public class WebRequestBase<T> where T : class
{
protected string uri;
protected Dictionary<string, string> requestValues;
public event EventHandler<ResponseSuccessEventArgs<T>> RequestSucceeded;
public event EventHandler<ResponseErrorEventArgs> RequestFailed;
public event EventHandler RequestComplete;
protected void OnRequestSuceeded(T responseItem)
{
if (RequestSucceeded != null)
{
RequestSucceeded(this, new ResponseSuccessEventArgs<T>() { ResponseItem = responseItem });
}
}
//This gets called after failure or success
protected void OnRequestComplete()
{
if (RequestComplete != null)
{
RequestComplete(this, null);
}
}
protected void OnRequestFailed(JsonResponseDictionary responseValues)
{
if (RequestFailed != null)
{
RequestFailed(this, new ResponseErrorEventArgs() { ResponseValues = responseValues });
}
}
public WebRequestBase()
{
requestValues = new Dictionary<string, string>();
}
protected virtual void SendRequest(object sender, DoWorkEventArgs e)
{
RequestManager requestManager = new RequestManager();
string jsonToSend = JsonConvert.SerializeObject(requestValues);
System.Diagnostics.Trace.Write(string.Format("ServiceRequest: {0}\r\n {1}\r\n", uri, string.Join("\r\n\t", jsonToSend.Split(','))));
requestManager.SendPOSTRequest(uri, jsonToSend, "", "", false);
if (requestManager.LastResponse != null)
{
try
{
e.Result = JsonConvert.DeserializeObject<T>(requestManager.LastResponse);
}
catch
{
e.Result = JsonConvert.DeserializeObject<JsonResponseDictionary>(requestManager.LastResponse);
}
}
T responseItem = e.Result as T;
if (responseItem != null)
{
OnRequestSuceeded(responseItem);
}
else
{
OnRequestFailed(e.Result as JsonResponseDictionary);
}
OnRequestComplete();
}
public virtual void ProcessErrorResponse(JsonResponseDictionary responseValues)
{
string errorMessage = responseValues.get("ErrorMessage");
if (errorMessage != null)
{
Console.WriteLine(string.Format("Request Failed: {0}", errorMessage));
}
else
{
Console.WriteLine(string.Format("Request Failed: Unknown Reason"));
}
}
public virtual void Request()
{
BackgroundWorker doRequestWorker = new BackgroundWorker();
doRequestWorker.DoWork += new DoWorkEventHandler(SendRequest);
//doRequestWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ProcessResponse);
doRequestWorker.RunWorkerAsync();
}
}
public class WebRequestBase
{
protected string uri;
@ -41,7 +149,7 @@ namespace MatterHackers.MatterControl.VersionManagement
public event EventHandler RequestSucceeded;
public event EventHandler RequestFailed;
public event EventHandler<ResponseErrorEventArgs> RequestFailed;
public event EventHandler RequestComplete;
@ -62,11 +170,11 @@ namespace MatterHackers.MatterControl.VersionManagement
}
}
protected void OnRequestFailed()
protected void OnRequestFailed(JsonResponseDictionary responseValues)
{
if (RequestFailed != null)
{
RequestFailed(this, null);
RequestFailed(this, new ResponseErrorEventArgs() { ResponseValues = responseValues });
}
}
@ -92,6 +200,8 @@ namespace MatterHackers.MatterControl.VersionManagement
RequestManager requestManager = new RequestManager();
string jsonToSend = getJsonToSend();
System.Diagnostics.Trace.Write(string.Format("ServiceRequest: {0}\r\n {1}\r\n", uri, string.Join("\r\n\t", jsonToSend.Split(','))));
requestManager.SendPOSTRequest(uri, jsonToSend, "", "", false);
if (requestManager.LastResponse == null)
{
@ -121,7 +231,6 @@ namespace MatterHackers.MatterControl.VersionManagement
protected virtual void ProcessResponse(object sender, RunWorkerCompletedEventArgs e)
{
JsonResponseDictionary responseValues = e.Result as JsonResponseDictionary;
if (responseValues != null)
{
string requestSuccessStatus = responseValues.get("Status");
@ -133,7 +242,7 @@ namespace MatterHackers.MatterControl.VersionManagement
else
{
ProcessErrorResponse(responseValues);
OnRequestFailed();
OnRequestFailed(responseValues);
}
OnRequestComplete();