Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        // ===============================================================================================
        // 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;
            }
        }