Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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)
            {
            }
        }