private void Machine_OperatingMode_Changed()
        {
            ButtonDistanceMode.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            ButtonUnit.IsEnabled         = machine.Mode == Machine.OperatingMode.Manual;
            ButtonArcPlane.IsEnabled     = machine.Mode == Machine.OperatingMode.Manual;
            ButtonStatus.IsEnabled       = machine.Mode == Machine.OperatingMode.Manual;
            ButtonFeedRateOvr.IsEnabled  = machine.Mode != Machine.OperatingMode.Disconnected;

            ButtonFeedHold.IsEnabled   = machine.Mode != Machine.OperatingMode.Disconnected;
            ButtonCycleStart.IsEnabled = machine.Mode != Machine.OperatingMode.Disconnected;
            ButtonSoftReset.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual;

            ButtonSettings.IsEnabled = machine.Mode == Machine.OperatingMode.Disconnected;

            ButtonFileOpen.IsEnabled  = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonFileSave.IsEnabled  = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonFileStart.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            ButtonFilePause.IsEnabled = machine.Mode == Machine.OperatingMode.SendFile;
            ButtonFileGoto.IsEnabled  = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonFileClear.IsEnabled = machine.Mode != Machine.OperatingMode.SendFile;

            ButtonManualSend.IsEnabled       = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualSetG10Zero.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualSetG92Zero.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualResetG10.IsEnabled   = machine.Mode == Machine.OperatingMode.Manual;

            if (machine.Mode != Machine.OperatingMode.Manual)
            {
                CheckBoxEnableJog.IsChecked = false;
            }
            CheckBoxEnableJog.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;

            ButtonEditSimplify.IsEnabled   = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonEditArcToLines.IsEnabled = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonEditSplit.IsEnabled      = machine.Mode != Machine.OperatingMode.SendFile;

            ModelTool.Visible = machine.Connected;

            ButtonSyncBuffer.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;

            StackPanelOverrides.IsEnabled = machine.Mode != Machine.OperatingMode.Disconnected;

            UpdateProbeTabButtons();

            if (lastMode == Machine.OperatingMode.Manual && machine.Mode == Machine.OperatingMode.SendFile)
            {
                LastFileStart = DateTime.Now;
                FileRuntimeTimer.Start();
            }

            if (lastMode == Machine.OperatingMode.SendFile && machine.Mode == Machine.OperatingMode.Manual)
            {
                StopRuntimeOnIdle = true;
            }

            lastMode = machine.Mode;

            groupBoxTLO.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
        }
        private void Machine_OperatingMode_Changed()
        {
            ButtonDistanceMode.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            ButtonUnit.IsEnabled         = machine.Mode == Machine.OperatingMode.Manual;
            ButtonArcPlane.IsEnabled     = machine.Mode == Machine.OperatingMode.Manual;
            ButtonStatus.IsEnabled       = machine.Mode == Machine.OperatingMode.Manual;
            ButtonFeedRateOvr.IsEnabled  = machine.Mode != Machine.OperatingMode.Disconnected;

            ButtonFeedHold.IsEnabled   = machine.Mode != Machine.OperatingMode.Disconnected;
            ButtonCycleStart.IsEnabled = machine.Mode != Machine.OperatingMode.Disconnected;
            ButtonSoftReset.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual;

            ButtonSettings.IsEnabled = machine.Mode == Machine.OperatingMode.Disconnected;

            ButtonFileOpen.IsEnabled   = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonFileSave.IsEnabled   = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonFileStart.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual;
            ButtonFilePause.IsEnabled  = machine.Mode == Machine.OperatingMode.SendFile;
            ButtonFileGoto.IsEnabled   = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonFileClear.IsEnabled  = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonFileReload.IsEnabled = machine.Mode != Machine.OperatingMode.SendFile;

            ButtonManualSend.IsEnabled         = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualResetAll.IsEnabled     = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualResetX.IsEnabled       = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualResetY.IsEnabled       = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualResetZ.IsEnabled       = machine.Mode == Machine.OperatingMode.Manual;
            ButtonManualReturnToZero.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            manualProbeBtn.IsEnabled           = machine.Mode == Machine.OperatingMode.Manual;

            // Manual Jogging - Enable only if machine is not activly sending a file
            manualJogBtnXPlusBtn.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            manualJogBtnXNegBtn.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual;
            manualJogBtnYPlusBtn.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            manualJogBtnYNegBtn.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual;
            manualJogBtnZPlusBtn.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;
            manualJogBtnZNegBtn.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual;

            // Manual Control - TextBoxJogFeed, TextBoxJogDistance, TextBoxJogFeedFine, TextBoxJogDistanceFine
            TextBoxJogFeed.IsEnabled         = machine.Mode == Machine.OperatingMode.Manual;
            TextBoxJogDistance.IsEnabled     = machine.Mode == Machine.OperatingMode.Manual;
            TextBoxJogFeedFine.IsEnabled     = machine.Mode == Machine.OperatingMode.Manual;
            TextBoxJogDistanceFine.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;

            if (machine.Mode != Machine.OperatingMode.Manual)
            {
                CheckBoxEnableJog.IsChecked = false;
            }
            CheckBoxEnableJog.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;

            ButtonEditSimplify.IsEnabled   = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonEditArcToLines.IsEnabled = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonEditSplit.IsEnabled      = machine.Mode != Machine.OperatingMode.SendFile;
            ButtonEditRotateCW.IsEnabled   = machine.Mode != Machine.OperatingMode.SendFile;

            ModelTool.Visible = machine.Connected;

            ButtonSyncBuffer.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;

            StackPanelOverrides.IsEnabled = machine.Mode != Machine.OperatingMode.Disconnected;

            if (lastMode == Machine.OperatingMode.Manual && machine.Mode == Machine.OperatingMode.SendFile)
            {
                LastFileStart = DateTime.Now;
                FileRuntimeTimer.Start();
            }

            if (lastMode == Machine.OperatingMode.SendFile && machine.Mode == Machine.OperatingMode.Manual)
            {
                StopRuntimeOnIdle = true;
            }

            lastMode = machine.Mode;

            groupBoxTLO.IsEnabled = machine.Mode == Machine.OperatingMode.Manual;

            ButtonGrblSettings.IsEnabled = machine.Mode == Machine.OperatingMode.Manual; // GRBL Settings Window
            ButtonMachineHome.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual; // Home Button
            ButtonWorkOffsets.IsEnabled  = machine.Mode == Machine.OperatingMode.Manual; // Work OffSets
            workOffsetSelect.IsEnabled   = machine.Mode == Machine.OperatingMode.Manual; // Work Offset Selection
        }