| using System; |
| using System.Linq; |
| using UnityEditor.ShortcutManagement; |
| using UnityEngine; |
|
|
| namespace UnityEditor.Timeline |
| { |
| [AttributeUsage(AttributeTargets.Class, Inherited = false)] |
| class ShortcutAttribute : Attribute |
| { |
| readonly string m_Identifier; |
| readonly string m_EventCommandName; |
| readonly string m_MenuShortcut; |
|
|
| public ShortcutAttribute(string identifier) |
| { |
| m_Identifier = identifier; |
| m_EventCommandName = identifier; |
| } |
|
|
| public ShortcutAttribute(string identifier, string commandName) |
| { |
| m_Identifier = identifier; |
| m_EventCommandName = commandName; |
| } |
|
|
| public ShortcutAttribute(KeyCode key, ShortcutModifiers modifiers = ShortcutModifiers.None) |
| { |
| m_MenuShortcut = new KeyCombination(key, modifiers).ToMenuShortcutString(); |
| } |
|
|
| public string GetMenuShortcut() |
| { |
| if (m_MenuShortcut != null) |
| return m_MenuShortcut; |
|
|
| |
| var shortcut = ShortcutIntegration.instance.directory.FindShortcutEntry(m_Identifier); |
| if (shortcut != null && shortcut.combinations.Any()) |
| { |
| return KeyCombination.SequenceToMenuString(shortcut.combinations); |
| } |
|
|
| return string.Empty; |
| } |
|
|
| public bool MatchesEvent(Event evt) |
| { |
| if (evt.type != EventType.ExecuteCommand) |
| return false; |
| return evt.commandName == m_EventCommandName; |
| } |
| } |
|
|
| [AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)] |
| class ShortcutPlatformOverrideAttribute : ShortcutAttribute |
| { |
| RuntimePlatform platform { get; } |
|
|
| public ShortcutPlatformOverrideAttribute(RuntimePlatform platform, KeyCode key, ShortcutModifiers modifiers = ShortcutModifiers.None) |
| : base(key, modifiers) |
| { |
| this.platform = platform; |
| } |
|
|
| public bool MatchesCurrentPlatform() |
| { |
| return Application.platform == platform; |
| } |
| } |
| } |
|
|