예제 #1
0
 /// <summary>
 /// 現在の設定に合わせて、キーアサイン一覧を更新します。
 /// </summary>
 public static void ReloadAssign()
 {
     assignDescription = null;
     if (!String.IsNullOrEmpty(Setting.Instance.KeyAssignProperty.KeyAssignFile) &&
         Setting.Instance.KeyAssignProperty.KeyAssignFile != KeyAssignProperty.DefaultAssignFileName)
     {
         try
         {
             assignDescription = AssignLoader.LoadAssign(KeyAssignHelper.GetPath(Setting.Instance.KeyAssignProperty.KeyAssignFile));
         }
         catch (Exception e)
         {
             ExceptionStorage.Register(e, ExceptionCategory.ConfigurationError,
                                       "キーアサインファイルを読み込めませんでした: " + Setting.Instance.KeyAssignProperty.KeyAssignFile,
                                       ReloadAssign);
             assignDescription = null;
         }
     }
     if (assignDescription == null)
     {
         try
         {
             assignDescription = AssignLoader.LoadAssign(KeyAssignHelper.GetPath(KeyAssignProperty.DefaultAssignFileName));
         }
         catch (Exception e)
         {
             ExceptionStorage.Register(e, ExceptionCategory.InternalError,
                                       "デフォルト キーアサインファイルが破損しています。Krileを再インストールしてください。",
                                       ReloadAssign);
         }
     }
     OnKeyAssignUpdated(EventArgs.Empty);
 }
        public static void Init()
        {
            KeyAssignCore.KeyAssignUpdated += (sender, e) =>
            {
                if (!changed)
                {
                    var lastException = ExceptionStorage.Exceptions.LastOrDefault();
                    if (lastException != null && lastException.Message.Contains("キーアサインファイル"))
                    {
                        ExceptionStorage.Remove(lastException);
                    }

                    SetAssignDescription(null);
                    if (!String.IsNullOrEmpty(Setting.Instance.KeyAssignProperty.KeyAssignFile) &&
                        Setting.Instance.KeyAssignProperty.KeyAssignFile != KeyAssignProperty.DefaultAssignFileName)
                    {
                        try
                        {
                            SetAssignDescription(LoadAssign(
                                                     AssignParser.Parse(KeyAssignHelper.GetPath(
                                                                            Setting.Instance.KeyAssignProperty.KeyAssignFile
                                                                            ))
                                                     ));
                        }
                        catch (Exception ex)
                        {
                            ExceptionStorage.Register(ex, ExceptionCategory.ConfigurationError,
                                                      "キーアサインファイルを読み込めませんでした: " + Setting.Instance.KeyAssignProperty.KeyAssignFile);
                            SetAssignDescription(null);
                        }
                    }
                    if (GetAssignDescription() == null)
                    {
                        try
                        {
                            SetAssignDescription(LoadAssign(
                                                     AssignParser.Parse(KeyAssignHelper.GetPath(
                                                                            KeyAssignProperty.DefaultAssignFileName
                                                                            ))
                                                     ));
                        }
                        catch (Exception ex)
                        {
                            ExceptionStorage.Register(ex, ExceptionCategory.InternalError,
                                                      "デフォルト キーアサインファイルが破損しています。Krileを再インストールしてください。");
                        }
                    }

                    changed = true;
                    RaiseKeyAssignUpdated();
                }
                else
                {
                    changed = false;
                }
            };
        }