示例#1
0
        public CodaDiStampe(ParamStampa param, string nomeStampante, StampaCompletataCallback callback) : base(nomeStampante)
        {
            this.workerThread.SetApartmentState(System.Threading.ApartmentState.STA);

            if (String.IsNullOrEmpty(nomeStampante))
            {
                throw new ArgumentException("Nome stampante vuota");
            }

            _stampatore = ImagingFactory.Instance.creaStampatore(param, nomeStampante);
            this.stampaCompletataCallback = callback;
        }
示例#2
0
        private CodaDiStampe ricavaCodaDiStampa(ParamStampa param)
        {
            string nomeStampante = param.nomeStampante;

            // Se non esiste già la stampante nella collezione, allora la istanzio
            CodaDiStampe coda = ricavaCodaDiStampa(nomeStampante);

            if (coda == null)
            {
                coda = new CodaDiStampe(param, nomeStampante, stampaCompletataCallback);
                coda.Start();
                this.code.Add(coda);
            }

            return(coda);
        }
示例#3
0
        /**
         *  Pronto per stampare
         */
        protected override void ProcessItem(LavoroDiStampa lavoroDiStampa)
        {
            //check if the user called Stop
            if (StopRequested)
            {
                _giornale.Info("Stampa stoppata dall'utente");
                _giornale.InfoFormat("Thread di stampa terminato durante il lavoro '{0}'.", lavoroDiStampa.ToString());
                return;
            }

            // Inizio a stampare
            lavoroDiStampa.stato = LavoroDiStampa.Stato.InEsecuzione;


            // Per evitare problemi di multi-thread, le immagini le idrato nello stesso thread con cui le manderò in stampa.
            // Non anticipare questo metodo altrimenti poi non va.
            // Se le immagini non sono idratate, le carico!
            ParamStampa param = null;

            if (lavoroDiStampa is LavoroDiStampaFoto)
            {
                LavoroDiStampaFoto lavoroDiStampaFoto = lavoroDiStampa as LavoroDiStampaFoto;

                //Rinstanzio il stampatore che potrebbe essere di un tipo differente dal mio
                LavoroDiStampaFoto lsp = (LavoroDiStampaFoto)lavoroDiStampa;
                param = lsp.param;
            }
            else if (lavoroDiStampa is LavoroDiStampaProvini)
            {
                LavoroDiStampaProvini lavoroDiStampaProvini = lavoroDiStampa as LavoroDiStampaProvini;

/* li carico dopo in modo diverso
 *                              foreach (Fotografia fot in lavoroDiStampaProvini.fotografie)
 *                              {
 *                                      AiutanteFoto.idrataImmagineDaStampare( fot );
 *                              }
 */

                //Rinstanzio il stampatore che potrebbe essere di un tipo differente dal mio
                LavoroDiStampaProvini lsp = (LavoroDiStampaProvini)lavoroDiStampa;
                param = lsp.param;
            }
            else if (lavoroDiStampa is LavoroDiStampaTessera)
            {
                LavoroDiStampaTessera lavoroDiStampaTessera = lavoroDiStampa as LavoroDiStampaTessera;
                param = lavoroDiStampaTessera.param;
            }

            // Se sono cambiati i parametri istanzio nuovamente lo stampatore.

            if (_stampatore == null || !param.GetType().IsAssignableFrom(_stampatore.tipoParamGestito))
            {
                _stampatore = ImagingFactory.Instance.creaStampatore(param, param.nomeStampante);
            }


            EsitoStampa esito = _stampatore.esegui(lavoroDiStampa);

            lavoroDiStampa.esitostampa = esito;
            lavoroDiStampa.stato       = LavoroDiStampa.Stato.Completato;

            StampatoMsg eventArgs = new StampatoMsg(lavoroDiStampa);

            eventArgs.descrizione = lavoroDiStampa.ToString();
            eventArgs.esito       = lavoroDiStampa.esitostampa == EsitoStampa.Ok ? Esito.Ok : Esito.Errore;

            if (stampaCompletataCallback != null)
            {
                stampaCompletataCallback.Invoke(this, eventArgs);
            }
        }
示例#4
0
 public CodaDiStampe(ParamStampa param, string nomeStampante) : this(param, nomeStampante, null)
 {
 }
示例#5
0
 public LavoroDiStampa(ParamStampa param)
 {
     this.param = param;
 }