/// <summary> /// Set key value pair. Replace existing. /// </summary> /// <param name="evt"></param> /// <param name="value"></param> public override void SetLocal(Event evt, object value) { if (!evt.IsValid) { throw new ArgumentOutOfRangeException(nameof(evt)); } // do not support keys with modifiers if (evt >= KeyModifiers.Alt) { throw new ArgumentOutOfRangeException(nameof(evt)); } // limit by some "rational" number ;) if (evt >= MaxSize) { throw new ArgumentOutOfRangeException(nameof(evt)); } if (evt >= items.Count) { // extend size of the items list var large = new List <KeyMapItem>(evt + 10); var i = 0; foreach (var item in items) { large[i++] = item; } items = large; } items[evt] = new KeyMapItem(evt, value); }
// =============================================================================================== // SET & GET bindings in this keymap only // =============================================================================================== /// <summary> /// Set key value pair. Replace existing /// </summary> public virtual void SetLocal(Event evt, object value) { if (!evt.IsValid) { throw new ArgumentOutOfRangeException(nameof(evt)); } var binding = new KeyMapItem(evt, value); var index = GetIndexOf(evt); if (index >= 0) { items[index] = binding; } else { items.Add(binding); } if (evt == Event.DefaultPseudoCode) { defaultBinding = binding; } }