Change message confirmation dialogs from modal to async w/callback.

This commit is contained in:
kevinepope 2014-10-21 21:20:09 -07:00
parent b7da8de443
commit e936fe98f7
20 changed files with 158 additions and 98 deletions

View file

@ -264,11 +264,7 @@ namespace MatterHackers.MatterControl.ActionBar
ApplicationSettings.Instance.set("HideGCodeWarning", null);
}
};
if (!StyledMessageBox.ShowMessageBox(gcodeWarningMessage, "Warning GCode file".Localize(), new GuiWidget[] { hideGCodeWaringCheckBox }, StyledMessageBox.MessageType.YES_NO))
{
// the user selected 'no' they don't want to print the file
return;
}
StyledMessageBox.ShowMessageBox(onConfirmPrint, gcodeWarningMessage, "Warning - GCode file".Localize(), new GuiWidget[] { hideGCodeWaringCheckBox }, StyledMessageBox.MessageType.YES_NO);
}
PrinterConnectionAndCommunication.Instance.CommunicationState = PrinterConnectionAndCommunication.CommunicationStates.PreparingToPrint;
@ -279,14 +275,30 @@ namespace MatterHackers.MatterControl.ActionBar
else
{
string message = String.Format(removeFromQueueMessage, pathAndFile);
if (StyledMessageBox.ShowMessageBox(message, itemNotFoundMessage, StyledMessageBox.MessageType.YES_NO))
{
QueueData.Instance.RemoveAt(queueDataView.SelectedIndex);
}
StyledMessageBox.ShowMessageBox(onRemoveMessageConfirm, message, itemNotFoundMessage, StyledMessageBox.MessageType.YES_NO);
}
}
}
void onConfirmPrint(bool messageBoxResponse)
{
if (!messageBoxResponse)
{
PrinterConnectionAndCommunication.Instance.CommunicationState = PrinterConnectionAndCommunication.CommunicationStates.PreparingToPrint;
PrintItemWrapper partToPrint = PrinterConnectionAndCommunication.Instance.ActivePrintItem;
SlicingQueue.Instance.QueuePartForSlicing(partToPrint);
partToPrint.SlicingDone.RegisterEvent(partToPrint_SliceDone, ref unregisterEvents);
}
}
void onRemoveMessageConfirm(bool messageBoxResponse)
{
if (messageBoxResponse)
{
QueueData.Instance.RemoveAt(queueDataView.SelectedIndex);
}
}
void onStartButton_Click(object sender, MouseEventArgs mouseEvent)
{
UiThread.RunOnIdle((state) =>
@ -327,10 +339,7 @@ namespace MatterHackers.MatterControl.ActionBar
{
if (timeSincePrintStarted.IsRunning && timeSincePrintStarted.ElapsedMilliseconds > (2 * 60 * 1000))
{
if (StyledMessageBox.ShowMessageBox(cancelCurrentPrintMessage, cancelCurrentPrintTitle, StyledMessageBox.MessageType.YES_NO))
{
CancelPrinting();
}
StyledMessageBox.ShowMessageBox(onConfirmCancelPrint, cancelCurrentPrintMessage, cancelCurrentPrintTitle, StyledMessageBox.MessageType.YES_NO);
}
else
{
@ -338,6 +347,14 @@ namespace MatterHackers.MatterControl.ActionBar
}
}
void onConfirmCancelPrint(bool messageBoxResponse)
{
if (messageBoxResponse)
{
CancelPrinting();
}
}
void CancelConnectionButton_Click(object state)
{
CancelPrinting();

View file

@ -207,27 +207,28 @@ namespace MatterHackers.MatterControl.ActionBar
string disconnectAndCancelMessage = "Disconnect and cancel the current print?".Localize();
string disconnectAndCancelTitle = "WARNING: Disconnecting will cancel the current print.\n\nDo you want to disconnect?".Localize();
void OnIdleDisconnect(object state)
{
bool doCancel = true;
{
if (PrinterConnectionAndCommunication.Instance.PrinterIsPrinting)
{
if (StyledMessageBox.ShowMessageBox(disconnectAndCancelMessage, disconnectAndCancelTitle, StyledMessageBox.MessageType.YES_NO))
{
PrinterConnectionAndCommunication.Instance.Stop();
}
else
{
doCancel = false;
}
StyledMessageBox.ShowMessageBox(onConfirmStopPrint, disconnectAndCancelMessage, disconnectAndCancelTitle, StyledMessageBox.MessageType.YES_NO);
}
if (doCancel)
else
{
PrinterConnectionAndCommunication.Instance.Disable();
selectActivePrinterButton.Invalidate();
}
}
void onConfirmStopPrint(bool messageBoxResponse)
{
if (messageBoxResponse)
{
PrinterConnectionAndCommunication.Instance.Stop();
PrinterConnectionAndCommunication.Instance.Disable();
selectActivePrinterButton.Invalidate();
}
}
void SetConnectionButtonVisibleState(object state)
{

View file

@ -117,7 +117,7 @@ namespace MatterHackers.MatterControl.ActionBar
&& goalTemp != PrinterConnectionAndCommunication.Instance.TargetBedTemperature)
{
string message = string.Format(waitingForBedToHeatMessage, PrinterConnectionAndCommunication.Instance.TargetBedTemperature, sliceSettingsNote);
StyledMessageBox.ShowMessageBox(message, waitingForBedToHeatTitle);
StyledMessageBox.ShowMessageBox(null, message, waitingForBedToHeatTitle);
}
else
{

View file

@ -117,7 +117,7 @@ namespace MatterHackers.MatterControl.ActionBar
&& goalTemp != PrinterConnectionAndCommunication.Instance.GetTargetExtruderTemperature(extruderNumber - 1))
{
string message = string.Format(waitingForeExtruderToHeatMessage, PrinterConnectionAndCommunication.Instance.GetTargetExtruderTemperature(extruderNumber - 1), sliceSettingsNote);
StyledMessageBox.ShowMessageBox(message, waitingForeExtruderToHeatTitle);
StyledMessageBox.ShowMessageBox(null, message, waitingForeExtruderToHeatTitle);
}
else
{