public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            double ret = Double.NaN;

            WpfScreen scr = values[0] as WpfScreen;

            // Grandezza della griglia dove visualizzo lo schermino blu virtuale


            // Se il parametro è minuscolo, allora devo gestire
            if (values.Length > 1)
            {
                GestoreFinestrePubbliche gfp = values[1] as GestoreFinestrePubbliche;

                WpfScreen scrSS = gfp.getScreenSlideShow();

                // Se lo schermo dove è presente lo ss non è quello che sto elaborando, allora esco
                if (scrSS == null || scrSS.deviceEnum != scr.deviceEnum)
                {
                    return((double)0);
                }


                Int32Rect      dest = new Int32Rect(0, 0, 200, 200);
                ProiettoreArea p    = new ProiettoreArea(dest);

                Int32Rect source = new Int32Rect((int)scrSS.WorkingArea.Left, (int)scrSS.WorkingArea.Top, (int)scrSS.WorkingArea.Width, (int)scrSS.WorkingArea.Height);
                p.autoCentra = true;

                Proiezione proiezione = p.calcola(source);

                // Ora uso l'area risultante, come destinazione per la dimensione dello SS
                ProiettoreArea p2          = new ProiettoreArea(proiezione.dest);
                Int32Rect      ssSorg      = new Int32Rect(gfp.geomSS.Left, gfp.geomSS.Top, gfp.geomSS.Width, gfp.geomSS.Height);
                Proiezione     proiezione2 = p2.calcola(ssSorg);

                if ("l".Equals(parameter))
                {
                    ret = proiezione2.dest.X;
                }
                if ("T".Equals(parameter))
                {
                    ret = proiezione2.dest.Y;
                }
                if ("W".Equals(parameter))
                {
                    ret = proiezione2.dest.Width;
                }
                if ("H".Equals(parameter))
                {
                    ret = proiezione2.dest.Height;
                }
            }
            else
            {
                Int32Rect      dest = new Int32Rect(0, 0, 200, 200);
                ProiettoreArea p    = new ProiettoreArea(dest);

                Int32Rect source = new Int32Rect((int)scr.WorkingArea.Left, (int)scr.WorkingArea.Top, (int)scr.WorkingArea.Width, (int)scr.WorkingArea.Height);
                p.autoCentra = true;

                Proiezione proiezione = p.calcola(source);

                if ("L".Equals(parameter))
                {
                    ret = proiezione.dest.X;
                }
                if ("T".Equals(parameter))
                {
                    ret = proiezione.dest.Y;
                }
                if ("W".Equals(parameter))
                {
                    ret = proiezione.dest.Width;
                }
                if ("H".Equals(parameter))
                {
                    ret = proiezione.dest.Height;
                }
            }



            return(ret);
        }
Example #2
0
//		private GestoreFinestrePubbliche _gestoreFinestrePubbliche;


        protected override void OnStartup(StartupEventArgs e)
        {
            // Faccio partire il log
            log4net.Config.XmlConfigurator.Configure();

            // loggo la versione dell'assembly (la release del software)
            _giornale.Info("Avvio " + Assembly.GetExecutingAssembly().FullName + " (" + Configurazione.releaseNickname + ")");

            // Senza di questa istruzione, gli StringFormat usati nei binding, usano sempre la cultura americana.
            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            impostaMutex();

                        #if (!DEBUG)
            // Preparo finestra di attesa
            SplashScreen splashScreen = new SplashScreen("SplashScreen1.png");
            splashScreen.Show(false, true);
                        #endif
            base.OnStartup(e);


            try {
                // Provo ad iniziare l'applicazione.
                // Se la configurazione è mancante, allora rimando all'apposita gestione
                LumenApplication.Instance.avvia();

                avvisoScadenzaLicenza(2);
            } catch (LicenseNotFoundException) {
                // Metto due message box perché la prima non si ferma !
                MessageBox.Show("Errore nella licenza", "ATTENZIONE");
                MessageBox.Show("Non è stata rilevata una licenza valida per l'uso del programma.\nContattare il fornitore del software " + Configurazione.applicationName + "\nper ottenere regolare licenza,\noppure una versione demo gratuita", "Licenza non valida", MessageBoxButton.OK, MessageBoxImage.Error);
                Environment.Exit(7);
            } catch (ConfigurazioneMancanteException em) {
                _giornale.Warn("Configurazione mancante. Occorre prima creare la configurazione", em);
                MessageBox.Show(em.Message, "ATTENZIONE");
                MessageBox.Show("Impossibile avviare l'applicazione adesso!\nOccorre prima creare la configurazione iniziale.\nLanciare il gestore della configurazione!", "Dimenticanza", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                Environment.Exit(2);
            } catch (ConfigurazioneNonValidaException nve) {
                _giornale.Error("Impossibile avviare applicazione", nve);

                // Metto due message box perché la prima non si ferma !
                MessageBox.Show(nve.Message, "ATTENZIONE");
                MessageBox.Show("Impossibile avviare l'applicazione!\nLa configurazione non è valida, oppure\nnon è stata aggiornata dopo un cambio release.\nLanciare apposito programma di gestione configurazione.", "ERRORE non previsto", MessageBoxButton.OK, MessageBoxImage.Error);

                Environment.Exit(6);
            } catch (Exception ee) {
                _giornale.Error("Impossibile avviare applicazione", ee);

                // Metto due message box perché la prima non si ferma !
                MessageBox.Show(ee.Message, "ATTENZIONE");
                MessageBox.Show("Impossibile avviare l'applicazione " + Configurazione.applicationName + " !\nErrore bloccante!\nVedere il log", "ERRORE non previsto", MessageBoxButton.OK, MessageBoxImage.Error);
                Environment.Exit(9);
            }

                        #if (!DEBUG)
            // Chiudo lo splash
            splashScreen.Close(new TimeSpan());
                        #endif

            _giornale.Info("Applicazione avviata. Apro il form principale.");

            // Creo il gestore delle finestre pubbliche e quindi apro la main.
            gestoreFinestrePubbliche = new GestoreFinestrePubbliche();
            gestoreFinestrePubbliche.aprireFinestraMain();
        }