public bool CopyPrinterList(ref List <PrinterInfo> printer_list) { var flag = true; lock (thread_sync) { if (printer_list.Count != PrintSpoolerClient.PrinterCount) { flag = false; } else { try { for (var index = 0; index < PrintSpoolerClient.PrinterCount & flag; ++index) { PrinterInfo info = PrintSpoolerClient.GetPrinter(index).Info; if (printer_list[index].hardware.com_port != info.hardware.com_port) { flag = false; } else if (printer_list[index].hardware.machine_type != info.hardware.machine_type) { flag = false; } else if (printer_list[index].serial_number != info.serial_number) { flag = false; } else if (printer_list[index].current_job != info.current_job) { flag = false; } } } catch (Exception ex) { flag = false; } } if (!flag) { printer_list.Clear(); for (var index = 0; index < PrintSpoolerClient.PrinterCount; ++index) { printer_list.Add(PrintSpoolerClient.GetPrinter(index).Info); } selected_printer_index = 0; } else if (selected_printer_index < 0) { selected_printer_index = 0; } } return(flag); }
private void OnReceivedMessage(SpoolerMessage message) { switch (message.Type) { case MessageType.PrinterConnected: informationbox.AddMessageToQueue(SpoolerConnection.LocalizedSpoolerMessageString(message)); break; case MessageType.JobComplete: case MessageType.JobCanceled: case MessageType.PrinterMessage: case MessageType.PrinterTimeout: case MessageType.SinglePointCalibrationNotSupported: case MessageType.MultiPointCalibrationNotSupported: case MessageType.PowerOutageRecovery: informationbox.AddMessageToQueue(SpoolerConnection.LocalizedSpoolerMessageString(message)); break; case MessageType.JobStarted: if (settingsManager.ShowAllWarnings) { messagebox.AddMessageToQueue(new SpoolerMessage(MessageType.UserDefined, "A new job has started. Please do not unplug your 3D printer while it is printing. If you unplug your it while printing, you will have to recalibrate.")); } informationbox.AddMessageToQueue(SpoolerConnection.LocalizedSpoolerMessageString(message) + string.Format(" - {0}", message.Message)); break; case MessageType.PrinterError: case MessageType.FirmwareUpdateFailed: case MessageType.ResetPrinterConnection: case MessageType.MicroMotionControllerFailed: case MessageType.ModelOutOfPrintableBounds: case MessageType.UnexpectedDisconnect: case MessageType.CantStartJobPrinterBusy: case MessageType.FirmwareErrorCyclePower: case MessageType.RPCError: case MessageType.SDPrintIncompatibleFilament: messagebox.AddMessageToQueue(message); break; case MessageType.UserDefined: if (settingsManager.ShowAllWarnings) { messagebox.AddMessageToQueue(message); break; } break; case MessageType.WarningABSPrintLarge: messagebox.AddMessageToQueue(message, PopupMessageBox.MessageBoxButtons.OK, new PopupMessageBox.OnUserSelectionDel(OnUserSelection)); break; case MessageType.IncompatibleSpooler: if (PrintSpoolerClient != null) { var num = (int)PrintSpoolerClient.ForceSpoolerShutdown(); break; } break; case MessageType.LoggingMessage: case MessageType.FullLoggingData: ProcessLoggerMessage(message); break; } if (OnPrinterMessage == null) { return; } try { OnPrinterMessage(message); } catch (Exception ex) { } }