Ejemplo n.º 1
0
        // ====================================================================
        // public 関数
        // ====================================================================

        // --------------------------------------------------------------------
        // 初期化
        // --------------------------------------------------------------------
        public override void Initialize()
        {
            base.Initialize();

            try
            {
                // マテリアルデザインの外観を変更
                IEnumerable <Swatch> swatches      = new SwatchesProvider().Swatches;
                PaletteHelper        paletteHelper = new();
                ITheme theme        = paletteHelper.GetTheme();
                Swatch?orangeSwatch = swatches.FirstOrDefault(x => x.Name == "orange");
                if (orangeSwatch != null)
                {
                    theme.SetPrimaryColor(orangeSwatch.ExemplarHue.Color);
                }
                Swatch?limeSwatch = swatches.FirstOrDefault(x => x.Name == "yellow");
                if (limeSwatch != null)
                {
                    theme.SetSecondaryColor(limeSwatch.ExemplarHue.Color);
                }
                paletteHelper.SetTheme(theme);

                // テンポラリフォルダー準備
                Common.InitializeTempFolder();

                // 環境
                YlModel.Instance.EnvModel.YlSettings.Load();
                YlModel.Instance.EnvModel.YlSettings.SetLogWriter(YlModel.Instance.EnvModel.LogWriter);
                YlModel.Instance.EnvModel.TagSettings.Load();
                YlModel.Instance.EnvModel.TagSettings.SetLogWriter(YlModel.Instance.EnvModel.LogWriter);
                DbCommon.PrepareDatabases();
                YlModel.Instance.EnvModel.StartAllCores();

                // メインウィンドウ表示
                _mainWindowViewModel = new MainWindowViewModel(this);
                if (YlModel.Instance.EnvModel.YlSettings.DesktopBounds.Width == 0.0 || YlModel.Instance.EnvModel.YlSettings.DesktopBounds.Height == 0.0)
                {
                    // デフォルトウィンドウサイズ
                }
                else
                {
                    // 前回のウィンドウサイズ
                    Rect adjustedRect = CommonWindows.AdjustWindowRect(YlModel.Instance.EnvModel.YlSettings.DesktopBounds);
                    _mainWindowViewModel.Left   = adjustedRect.Left;
                    _mainWindowViewModel.Top    = adjustedRect.Top;
                    _mainWindowViewModel.Width  = adjustedRect.Width;
                    _mainWindowViewModel.Height = adjustedRect.Height;
                }
                Messenger.Raise(new TransitionMessage(_mainWindowViewModel, YlConstants.MESSAGE_KEY_OPEN_MAIN_WINDOW));
            }
            catch (Exception excep)
            {
                // YlModel 未生成の可能性があるためまずはメッセージ表示のみ
                MessageBox.Show("スプラッシュウィンドウ初期化時エラー:\n" + excep.Message + "\n" + excep.StackTrace, "エラー", MessageBoxButton.OK, MessageBoxImage.Error);

                // 可能であればログする。YlModel 生成中に例外が発生する可能性があるが、それについては集約エラーハンドラーに任せる
                YlModel.Instance.EnvModel.LogWriter.LogMessage(TraceEventType.Error, "スプラッシュウィンドウ初期化時エラー:\n" + excep.Message);
                YlModel.Instance.EnvModel.LogWriter.LogMessage(Common.TRACE_EVENT_TYPE_STATUS, " スタックトレース:\n" + excep.StackTrace);

                // 継続できないのでアプリを終了する
                Environment.Exit(1);
            }
        }