private void OnDataContextPropertyChanged(object sender, PropertyChangedEventArgs e) { if (sender is GrblViewModel) { switch (e.PropertyName) { case nameof(GrblViewModel.GrblState): if (!Controller.ResetPending) { if (initOK == false && (sender as GrblViewModel).GrblState.State != GrblStates.Alarm) { Dispatcher.BeginInvoke(new System.Action(() => InitSystem()), DispatcherPriority.ApplicationIdle); } } break; case nameof(GrblViewModel.IsGCLock): MainWindow.ui.JobRunning = (sender as GrblViewModel).IsJobRunning; // MainWindow.EnableView(!(sender as GrblViewModel).IsGCLock, ViewType.Probing); break; case nameof(GrblViewModel.IsSleepMode): EnableUI(!(sender as GrblViewModel).IsSleepMode); break; case nameof(GrblViewModel.IsJobRunning): MainWindow.ui.JobRunning = (sender as GrblViewModel).IsJobRunning; if (GrblInfo.ManualToolChange) { GrblCommand.ToolChange = (sender as GrblViewModel).IsJobRunning ? "T{0}M6" : "M61Q{0}"; } break; case nameof(GrblViewModel.IsToolChanging): MainWindow.ui.JobRunning = (sender as GrblViewModel).IsToolChanging || (sender as GrblViewModel).IsJobRunning; break; case nameof(GrblViewModel.Tool): if (GrblInfo.ManualToolChange && (sender as GrblViewModel).Tool != GrblConstants.NO_TOOL) { GrblWorkParameters.RemoveNoTool(); } break; case nameof(GrblViewModel.GrblReset): if ((sender as GrblViewModel).IsReady) { if (!Controller.ResetPending && (sender as GrblViewModel).GrblReset) { initOK = null; Dispatcher.BeginInvoke(new System.Action(() => Activate(true, ViewType.GRBL)), DispatcherPriority.ApplicationIdle); } } break; case nameof(GrblViewModel.ParserState): if (!Controller.ResetPending && (sender as GrblViewModel).GrblReset) { EnableUI(true); (sender as GrblViewModel).GrblReset = false; } break; case nameof(GrblViewModel.FileName): string filename = (sender as GrblViewModel).FileName; MainWindow.ui.WindowTitle = filename; if (string.IsNullOrEmpty(filename)) { MainWindow.CloseFile(); } else if ((sender as GrblViewModel).IsSDCardJob) { MainWindow.EnableView(false, ViewType.GCodeViewer); } else if (filename.StartsWith("Wizard:")) { if (MainWindow.IsViewVisible(ViewType.GCodeViewer)) { MainWindow.EnableView(true, ViewType.GCodeViewer); gcodeRenderer.Open(GCode.File.Tokens); } } else if (!string.IsNullOrEmpty(filename) && AppConfig.Settings.GCodeViewer.IsEnabled) { MainWindow.GCodeViewer.Open(GCode.File.Tokens); MainWindow.EnableView(true, ViewType.GCodeViewer); GCodeSender.EnablePolling(false); gcodeRenderer.Open(GCode.File.Tokens); GCodeSender.EnablePolling(true); } break; } } }
private void OnDataContextPropertyChanged(object sender, PropertyChangedEventArgs e) { if (sender is GrblViewModel) { switch (e.PropertyName) { case nameof(GrblViewModel.GrblState): if (initOK == false && ((GrblViewModel)sender).GrblState.State != GrblStates.Alarm) { InitSystem(); } break; case nameof(GrblViewModel.IsSleepMode): EnableUI(!((GrblViewModel)sender).IsSleepMode); break; case nameof(GrblViewModel.IsJobRunning): MainWindow.ui.JobRunning = ((GrblViewModel)sender).IsJobRunning; if (GrblInfo.ManualToolChange) { GrblCommand.ToolChange = MainWindow.ui.JobRunning ? "T{0}M6" : "M61Q{0}"; } break; case nameof(GrblViewModel.Tool): if (GrblInfo.ManualToolChange && ((GrblViewModel)sender).Tool != GrblConstants.NO_TOOL) { GrblWorkParameters.RemoveNoTool(); } break; case nameof(GrblViewModel.GrblReset): if (((GrblViewModel)sender).GrblReset) { initOK = null; Activate(true, ViewType.GRBL); } // Comms.com.WriteCommand(GrblConstants.CMD_GETPARSERSTATE); break; case nameof(GrblViewModel.ParserState): if (((GrblViewModel)sender).GrblReset) { EnableUI(true); // ((GrblViewModel)sender).GrblReset = false; } break; case nameof(GrblViewModel.FileName): string filename = ((GrblViewModel)sender).FileName; MainWindow.ui.WindowTitle = filename; if (filename.StartsWith("SDCard:")) { sdStream = true; MainWindow.EnableView(false, ViewType.GCodeViewer); } else if (filename.StartsWith("Wizard:")) { if (MainWindow.IsViewVisible(ViewType.GCodeViewer)) { MainWindow.EnableView(false, ViewType.GCodeViewer); // For now - rendering of G76 must be implemented first MainWindow.GCodeViewer.Open(filename, GCodeSender.GCode.Tokens); } } else if (!string.IsNullOrEmpty(filename) && MainWindow.IsViewVisible(ViewType.GCodeViewer)) { MainWindow.EnableView(true, ViewType.GCodeViewer); GCodeSender.EnablePolling(false); MainWindow.GCodeViewer.Open(filename, GCode.File.Tokens); GCodeSender.EnablePolling(true); } break; } } }