//------------------------------------------------------------------------- /// <summary> /// 構築 /// 初期アサインとアサインを別々に設定する版 /// </summary> /// <param name="rule">割り当てルール</param> /// <param name="name">アサイン名</param> /// <param name="group">グループ名</param> /// <param name="default_key">初期アサイン</param> /// <param name="key">アサイン</param> /// <param name="tag">タグ</param> /// <param name="ini_name">設定ファイル書き出し時の名前(英数が望ましい)</param> internal Assign(KeyAssignRule rule, string name, string group, Keys default_key, Keys key, object tag, string ini_name) { if (rule == null) { throw new ArgumentNullException("ショートカットに割り当てられるかを決定するためにAssignRuleが必要です。"); } m_assign_rule = rule; m_keys = key; m_default_keys = default_key; m_name = name; m_group = group; m_tag = tag; m_ini_name = ini_name; // アサイン不可能ならNoneにする if (!CanAssignKeys(m_keys)) { m_keys = Keys.None; } // 初期値で割り当て不可なら例外を投げる if ((m_default_keys != Keys.None) && (!CanAssignKeys(m_default_keys))) { throw new Exception("割り当てできないキーの組み合わせが初期値に指定されました。"); // m_default_keys = Keys.None; } }
//------------------------------------------------------------------------- /// <summary> /// 構築、 /// コピーコンストラクタ /// </summary> /// <param name="from"></param> public KeyAssignList(KeyAssignList from) { m_list = new List <Assign>(); m_assign_rule = from.m_assign_rule; // ルールは参照をコピー foreach (Assign i in from.m_list) { m_list.Add(new Assign(i)); } }
//------------------------------------------------------------------------- /// <summary> /// 構築、 /// KeyAssignRuleを指定する /// </summary> /// <param name="rule"></param> public KeyAssignList(KeyAssignRule rule) { m_list = new List <Assign>(); m_assign_rule = rule; if (m_assign_rule == null) { throw new ArgumentNullException("AssignRuleの指定がnullです。"); } }
//------------------------------------------------------------------------- /// <summary> /// System.Windows.Forms.Shortcutの場合のみtrueを返す /// </summary> /// <param name="key">Keys</param> /// <returns>アサイン可能ならtrue</returns> public override bool CanAssignKeys(Keys key) { // System.Windows.Forms.Shortcutかどうかチェック if (!KeyAssignRule.IsShortcut(key)) { return(false); } // base return(base.CanAssignKeys(key)); }
//------------------------------------------------------------------------- /// <summary> /// 構築、割り当てルール指定版 /// </summary> /// <param name="rule"></param> public KeyAssignManager(KeyAssignRule rule) { m_list = new KeyAssignList(rule); }
//------------------------------------------------------------------------- /// <summary> /// 構築 /// 初期アサインを最初のアサインとする /// </summary> /// <param name="rule">割り当てルール</param> /// <param name="name">アサイン名</param> /// <param name="group">グループ名</param> /// <param name="default_key">初期アサイン</param> /// <param name="tag">タグ</param> /// <param name="ini_name">設定ファイル書き出し時の名前(英数が望ましい)</param> internal Assign(KeyAssignRule rule, string name, string group, Keys default_key, object tag, string ini_name) : this(rule, name, group, default_key, default_key, tag, ini_name) { }