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); }
// 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(); }