protected void SetButtonStates()
        {
            // If we don't have leveling data and we need it
            bool showSetupButton = PrintLevelingData.NeedsToBeRun(printer) ||
                                   ProbeCalibrationWizard.NeedsToBeRun(printer) ||
                                   LoadFilamentWizard.NeedsToBeRun(printer);

            switch (printer.Connection.CommunicationState)
            {
            case CommunicationStates.FinishedPrint:
            case CommunicationStates.Connected:
                if (showSetupButton)
                {
                    startPrintButton.Visible  = false;
                    finishSetupButton.Visible = true;
                    finishSetupButton.Enabled = true;
                    theme.ApplyPrimaryActionStyle(finishSetupButton);
                }
                else
                {
                    startPrintButton.Visible  = true;
                    startPrintButton.Enabled  = true;
                    finishSetupButton.Visible = false;
                    theme.ApplyPrimaryActionStyle(startPrintButton);
                }
                break;

            case CommunicationStates.PrintingFromSd:
            case CommunicationStates.Printing:
            case CommunicationStates.Paused:
            default:
                if (showSetupButton)
                {
                    startPrintButton.Visible  = false;
                    finishSetupButton.Visible = true;
                    finishSetupButton.Enabled = false;
                    theme.RemovePrimaryActionStyle(finishSetupButton);
                }
                else
                {
                    startPrintButton.Visible  = true;
                    startPrintButton.Enabled  = false;
                    finishSetupButton.Visible = false;
                    theme.RemovePrimaryActionStyle(startPrintButton);
                }
                break;
            }
        }
 public static bool SetupRequired(PrinterConfig printer)
 {
     return(LevelingValidation.NeedsToBeRun(printer) ||          // PrintLevelingWizard
            ProbeCalibrationWizard.NeedsToBeRun(printer) ||
            FilamentSetupWizard.SetupRequired(printer));
 }