public FaceDetectionCompletedEventExample1App() : base() { Egs.BindableResources.Current.CultureChanged += delegate { ApplicationCommonSettings.HostApplicationName = "FaceDetectionCompletedEventExample1"; }; Egs.BindableResources.Current.ChangeCulture(""); if (DuplicatedProcessStartBlocking.TryGetMutexOnTheBeginningOfApplicationConstructor() == false) { var msg = string.Format(System.Globalization.CultureInfo.InvariantCulture, Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_Application0IsAlreadyRunning, ApplicationCommonSettings.HostApplicationName); MessageBox.Show(msg, ApplicationCommonSettings.HostApplicationName); Application.Current.Shutdown(); return; } ApplicationCommonSettings.IsDebugging = true; Components = new EgsHostAppBaseComponents(); Components.InitializeOnceAtStartup(); Components.Device.Settings.FaceDetectionMethod.Value = Egs.PropertyTypes.FaceDetectionMethods.DefaultProcessOnEgsHostApplication; Components.CameraViewWindow.KeyDown += (sender, e) => { switch (e.Key) { case System.Windows.Input.Key.Escape: Components.CameraViewWindow.Close(); break; } }; Components.Device.FaceDetectionOnHost.FaceDetectionCompleted += FaceDetectionOnHost_FaceDetectionCompleted; Window = new FaceDetectionCompletedEventExample1MainWindow(); this.Exit += delegate { Window.Close(); if (Components != null) { Components.Dispose(); Components = null; } DuplicatedProcessStartBlocking.ReleaseMutex(); }; }
public ZkooHostAppWithTutorialApplication() : base() { // TODO: Check the correct way to catch all exceptions and show it "We're sorry" dialog. But the next way is still meaningless now, and sometimes this code can cause a problem that application cannot exit. //AppDomain.CurrentDomain.UnhandledException += (sender, e) => { ShutdownApplicationByException((Exception)e.ExceptionObject); }; try { Egs.BindableResources.Current.CultureChanged += delegate { ApplicationCommonSettings.HostApplicationName = Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_Zkoo; Egs.ZkooTutorial.BindableResources.Current.ChangeCulture(Egs.EgsDeviceControlCore.Properties.Resources.Culture.Name); }; Egs.BindableResources.Current.ChangeCulture(ApplicationCommonSettings.DefaultCultureInfoName); if (DuplicatedProcessStartBlocking.TryGetMutexOnTheBeginningOfApplicationConstructor() == false) { var msg = string.Format(System.Globalization.CultureInfo.InvariantCulture, Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_Application0IsAlreadyRunning, ApplicationCommonSettings.HostApplicationName); MessageBox.Show(msg, ApplicationCommonSettings.HostApplicationName); if (Application.Current != null) { Application.Current.Shutdown(); } return; } hostAppComponents = new EgsHostAppBaseComponents(); hostAppComponents.InitializeOnceAtStartup(); hostAppComponents.HasResetSettings += delegate { // You can modify the application default settings here. hostAppComponents.Device.Settings.FaceDetectionMethod.Value = Egs.PropertyTypes.FaceDetectionMethods.DefaultProcessOnEgsHostApplication; hostAppComponents.IsToStartTutorialWhenHostApplicationStart = true; }; if (SettingsSerialization.LoadSettingsJsonFile(hostAppComponents) == false) { hostAppComponents.Reset(); } hostAppComponents.CameraViewWindow.Closed += delegate { hostAppComponents.Dispose(); }; hostAppComponents.Disposing += delegate { // NOTE: Save settings before Dispose(). Target event is not Disposed but Disposing. if (hostAppComponents.CanSaveSettingsJsonFileSafely) { SettingsSerialization.SaveSettingsJsonFile(hostAppComponents); } if (navigator != null) { // detach static event Microsoft.Win32.SystemEvents.DisplaySettingsChanged -= SystemEvents_DisplaySettingsChanged; } // NOTE: IMPORTANT! if (navigator != null) { navigator.Close(); navigator = null; } zkooTutorialModel = null; }; base.Exit += delegate { if (hostAppComponents != null) { hostAppComponents.Dispose(); hostAppComponents = null; } DuplicatedProcessStartBlocking.ReleaseMutex(); }; hostAppComponents.CheckIfDeviceFirmwareIsLatestOrNotAndExitApplicationIfFailed(); // NOTE: If users exit the application by the button on Camera View while "Firmware Update" dialog, exception occurs. // MUSTDO: We will fix this. if (hostAppComponents.SettingsWindow == null) { return; } // NOTE: Codes about "Tutorial" application. // TODO: Tutorial application should be independent from this host application, so I wrote it as an event handler. var hasZkooTutorialLaunched = false; var zkooTutorialLaunchAction = new Action(() => { if (hasZkooTutorialLaunched == false) { zkooTutorialModel = new ZkooTutorialModel(hostAppComponents); navigator = new MainNavigationWindow(); // attach static event Microsoft.Win32.SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged; // NOTE: TODO: When exceptions occur in Initialize, we have to distinguish whether from Settings files or from source code. zkooTutorialModel.TutorialAppHeaderMenu.InitializeOnceAtStartup(navigator, zkooTutorialModel); zkooTutorialModel.InitializeOnceAtStartup(hostAppComponents); navigator.InitializeOnceAtStartup(zkooTutorialModel); hasZkooTutorialLaunched = true; } navigator.StartTutorial(); }); hostAppComponents.SettingsWindow.SettingsUserControl.TutorialAppSettingsGroupBoxVisibility = Visibility.Visible; hostAppComponents.StartTutorialCommand.PerformEventHandler += delegate { zkooTutorialLaunchAction.Invoke(); }; hostAppComponents.IsStartingDeviceFirmwareUpdate += delegate { if (navigator != null) { navigator.ExitTutorial(); } }; hostAppComponents.IsStartingHostApplicationUpdate += delegate { if (navigator != null) { navigator.ExitTutorial(); } }; if (ApplicationCommonSettings.IsInternalRelease || ApplicationCommonSettings.IsDebuggingInternal) { var exvisionInternalSettingsTabItem = new System.Windows.Controls.TabItem() { Header = "Exvision" }; exvisionInternalSettingsTabItem.Content = new Egs.Views.ExvisionSettingsUserControl(); hostAppComponents.SettingsWindow.SettingsUserControl.SettingsTabControl.Items.Add(exvisionInternalSettingsTabItem); } if (hostAppComponents.IsToStartTutorialWhenHostApplicationStart) { zkooTutorialLaunchAction.Invoke(); } } catch (Exception ex) { ShutdownApplicationByException(ex); } }
public ZkooHostAppApplication() : base() { hostAppComponents = null; try { Egs.BindableResources.Current.CultureChanged += delegate { ApplicationCommonSettings.HostApplicationName = Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_GestureCamera; }; Egs.BindableResources.Current.ChangeCulture(ApplicationCommonSettings.DefaultCultureInfoName); if (DuplicatedProcessStartBlocking.TryGetMutexOnTheBeginningOfApplicationConstructor() == false) { var msg = string.Format(System.Globalization.CultureInfo.InvariantCulture, Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_Application0IsAlreadyRunning, ApplicationCommonSettings.HostApplicationName); MessageBox.Show(msg, ApplicationCommonSettings.HostApplicationName); if (Application.Current != null) { Application.Current.Shutdown(); } return; } hostAppComponents = new EgsHostAppBaseComponents(); hostAppComponents.InitializeOnceAtStartup(); hostAppComponents.HasResetSettings += delegate { // You can modify the application default settings here. hostAppComponents.Device.Settings.CursorSpeedAndPrecisionMode.Value = Egs.PropertyTypes.CursorSpeedAndPrecisionModes.Standard; hostAppComponents.Device.Settings.FaceDetectionMethod.Value = Egs.PropertyTypes.FaceDetectionMethods.DefaultProcessOnEgsHostApplication; }; if (SettingsSerialization.LoadSettingsJsonFile(hostAppComponents) == false) { hostAppComponents.Reset(); } hostAppComponents.CameraViewWindow.Closed += delegate { hostAppComponents.Dispose(); }; hostAppComponents.Disposing += delegate { // NOTE: Save settings before Dispose(). Target event is not Disposed but Disposing. if (hostAppComponents.CanSaveSettingsJsonFileSafely) { SettingsSerialization.SaveSettingsJsonFile(hostAppComponents); } }; base.Exit += delegate { if (hostAppComponents != null) { hostAppComponents.Dispose(); hostAppComponents = null; } DuplicatedProcessStartBlocking.ReleaseMutex(); }; hostAppComponents.CheckIfDeviceFirmwareIsLatestOrNotAndExitApplicationIfFailed(); // NOTE: If users exit the application by the button on Camera View while "Firmware Update" dialog, exception occurs. // MUSTDO: We will fix this. if (hostAppComponents.SettingsWindow == null) { return; } // TODO: The tutorial program will be separated into an independent application. hostAppComponents.SettingsWindow.SettingsUserControl.TutorialAppSettingsGroupBoxVisibility = Visibility.Collapsed; hostAppComponents.StartTutorialCommand.CanPerform = false; } catch (Exception ex) { ShutdownApplicationByException(ex); } }
public App() : base() { Egs.BindableResources.Current.CultureChanged += delegate { ApplicationCommonSettings.HostApplicationName = Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_GestureCamera; //ApplicationCommonSettings.HostApplicationName = "WpfApplication1"; }; // You can change the application CultureInfo to some cultures. // The next line lets it use OS culture Egs.BindableResources.Current.ChangeCulture(""); //Egs.BindableResources.Current.ChangeCulture(ApplicationCommonSettings.DefaultCultureInfoName); //Egs.BindableResources.Current.ChangeCulture("en"); //Egs.BindableResources.Current.ChangeCulture("ja"); //Egs.BindableResources.Current.ChangeCulture("zh-Hans"); if (DuplicatedProcessStartBlocking.TryGetMutexOnTheBeginningOfApplicationConstructor() == false) { // Currently, the ZkooHostApp is not service, so only one instance can run. var msg = string.Format(System.Globalization.CultureInfo.InvariantCulture, Egs.EgsDeviceControlCore.Properties.Resources.CommonStrings_Application0IsAlreadyRunning, ApplicationCommonSettings.HostApplicationName); MessageBox.Show(msg, ApplicationCommonSettings.HostApplicationName); Application.Current.Shutdown(); return; } // The next line shows "Developer" tab on SettingsWindow. ApplicationCommonSettings.IsDebugging = true; // This object has all Views and Models var hostAppComponents = new EgsHostAppBaseComponents(); // A lot of classes in "Egs" namespace have "InitializeOnceAtStartup..." methods. Please call them. hostAppComponents.InitializeOnceAtStartup(); hostAppComponents.HasResetSettings += delegate { // You can modify the application default settings here. hostAppComponents.Device.Settings.CursorSpeedAndPrecisionMode.Value = Egs.PropertyTypes.CursorSpeedAndPrecisionModes.Standard; }; hostAppComponents.CameraViewWindow.KeyDown += (sender, e) => { switch (e.Key) { case System.Windows.Input.Key.Escape: // NOTE: The specification changed. // When you use EgsHostAppBaseComponents, it disposes itself when CameraViewWindow is closed. // So you need not to attach "event handler which calls host.Dispose()" to "event CameraViewWindow.Closed". hostAppComponents.CameraViewWindow.Close(); break; } }; this.Exit += delegate { if (hostAppComponents != null) { hostAppComponents.Dispose(); hostAppComponents = null; } DuplicatedProcessStartBlocking.ReleaseMutex(); }; }