public void ModifyShortcutEntry(Identifier identifier, List <KeyCombination> combinationSequence)
        {
            var shortcutEntry = m_Entries.FirstOrDefault(e => e.identifier.Equals(identifier));

            shortcutEntry.SetOverride(combinationSequence);

            SerializableShortcutEntry profileEntry = null;

            foreach (var activeProfileEntry in m_ActiveProfile.entries)
            {
                if (activeProfileEntry.identifier.Equals(identifier))
                {
                    profileEntry = activeProfileEntry;
                    profileEntry.keyCombination = new List <KeyCombination>(combinationSequence);
                    break;
                }
            }

            if (profileEntry == null)
            {
                m_ActiveProfile.Add(shortcutEntry);
            }

            if (shortcutsModified != null)
            {
                shortcutsModified(this);
            }
        }
示例#2
0
 internal void ApplyProfile(ShortcutProfile shortcutProfile, bool migratePrefKeys = false)
 {
     // pref keys should only be migrated when the default user profile is applied
     if (migratePrefKeys)
     {
         foreach (var entry in entries)
         {
             if (entry.prefKeyMigratedValue != null)
             {
                 var overrideEntry = new SerializableShortcutEntry
                 {
                     identifier     = entry.identifier,
                     keyCombination = new List <KeyCombination> {
                         entry.prefKeyMigratedValue.Value
                     }
                 };
                 entry.ApplyOverride(overrideEntry);
             }
         }
     }
     foreach (var shortcutOverride in shortcutProfile.entries)
     {
         var entry = entries.FirstOrDefault(e => e.identifier.Equals(shortcutOverride.identifier));
         if (entry != null)
         {
             entry.ApplyOverride(shortcutOverride);
         }
     }
     m_ActiveProfile = shortcutProfile;
 }
示例#3
0
        public void ModifyShortcutEntry(Identifier identifier, IEnumerable <KeyCombination> combinationSequence)
        {
            if (activeProfile == null)
            {
                throw new InvalidOperationException("No active profile");
            }

            if (!m_BindingValidator.IsCombinationValid(combinationSequence, out string invalidBindingMessage))
            {
                throw new ArgumentException(invalidBindingMessage, nameof(combinationSequence));
            }

            var shortcutEntry = m_Entries.FirstOrDefault(e => e.identifier.Equals(identifier));
            var oldBinding    = new ShortcutBinding(shortcutEntry.combinations);

            shortcutEntry.SetOverride(combinationSequence);

            if (!m_BindingValidator.IsBindingValid(shortcutEntry, out invalidBindingMessage))
            {
                shortcutEntry.ResetToDefault();
                Debug.LogError(invalidBindingMessage);
                shortcutBindingChanged?.Invoke(this, identifier, oldBinding, oldBinding);
                return;
            }

            SerializableShortcutEntry profileEntry = null;

            foreach (var activeProfileEntry in m_ActiveProfile.entries)
            {
                if (activeProfileEntry.identifier.Equals(identifier))
                {
                    profileEntry = activeProfileEntry;
                    oldBinding   = new ShortcutBinding(profileEntry.combinations);
                    profileEntry.combinations = new List <KeyCombination>(combinationSequence);
                    break;
                }
            }

            if (profileEntry == null)
            {
                m_ActiveProfile.Add(shortcutEntry);
            }

            SaveShortcutProfile(m_ActiveProfile);

            var newBinding = new ShortcutBinding(combinationSequence);

            shortcutBindingChanged?.Invoke(this, identifier, oldBinding, newBinding);
        }
 public void ApplyOverride(SerializableShortcutEntry shortcutOverride)
 {
     SetOverride(shortcutOverride.keyCombination);
 }
 internal void ApplyOverride(SerializableShortcutEntry shortcutOverride)
 {
     SetOverride(shortcutOverride.combinations);
 }