public bool Invoke(Keys keyData) { bool shift = (keyData & Keys.Shift) == Keys.Shift; bool ctrl = (keyData & Keys.Control) == Keys.Control; Keys key = (Keys)(Int16)keyData; if (key == Keys.ControlKey || key == Keys.ShiftKey) { return(false); } StringBuilder sb = new StringBuilder(); if (ctrl) { sb.Append(Keys.Control.ToString() + "+"); } if (shift) { sb.Append(Keys.Shift.ToString() + "+"); } sb.Append(key.ToString()); bool empty = queue.Length == 0; queue += sb.ToString(); CommandMapping km = Find(queue); if (km == null) { queue = string.Empty; return(!empty); // not handled } if (!km.KeySequence.Equals(queue)) { // haven't found exact match yet queue += ","; return(true); } queue = string.Empty; try { Invoke(km.Method); } catch (XEditNetCommandException e) { MessageBox.Show("Failed to invoke command: " + km.Method); } return(true); }
public void DispatchCommand(CommandMapping cmd) { switch ( cmd.Method ) { case "EditUndo": EditUndo(); break; case "EditRedo": EditRedo(); break; case "EditCut": EditCut(); break; case "EditCopy": EditCopy(); break; case "EditPaste": EditPaste(); break; case "EditDelete": EditDelete(); break; case "EditSelectAll": EditSelectAll(); break; case "EditExtendSelection": EditExtendSelection(); break; case "EditChangeElement": EditChangeElement(); break; case "EditInsertElement": EditInsertElement(); break; case "EditModifyAttribute": EditModifyAttribute(); break; case "FileReloadStylesheet": FileReloadStylesheet(); break; case "ViewTagsOff": ViewTagsOff(); break; case "ViewTagsOn": ViewTagsOn(); break; } }