using Aitex.Core.RT.Log;
using Aitex.Core.Util;
using Prism.Ioc;
using Prism.Modularity;
using Prism.Unity;
using System;
using System.Threading;
using System.Windows;
using System.Windows.Media.Animation;
using Venus_UI.Views;
using WPF.Themes.UserControls;
using System.Configuration;
namespace Venus_UI
{
    /// 
    /// App.xaml 的交互逻辑
    /// 
    public partial class App : PrismApplication
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            Mutex mutex;
            bool ret;
            mutex = new Mutex(true, "Venus_UI", out ret);
            if (!ret)
            {
                WPFMessageBox.ShowError("Only One Venus_UI is allowed");
                Environment.Exit(0);
            }
            FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
            DispatcherUnhandledException += App_DispatcherUnhandledException;
            Singleton.Instance.Initialize();
            var TimelineDesiredFrameRate =Convert.ToInt32( ConfigurationManager.AppSettings["TimelineDesiredFrameRate"]);
            Timeline.DesiredFrameRateProperty.OverrideMetadata(
               typeof(Timeline),
               new FrameworkPropertyMetadata { DefaultValue = TimelineDesiredFrameRate }
               );
            base.OnStartup(e);
        }
        void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
        {
            LOG.Info("UI程序异常." +  e.Exception.Message);
            e.Handled = true;
        }
        protected override Window CreateShell()
        {
            return Container.Resolve();
        }
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
        }
        protected override IModuleCatalog CreateModuleCatalog()
        {
            return new ConfigurationModuleCatalog();
        }
    }
}