72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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;
 | |
| 
 | |
|             //find the mapped shortcut in the shortcut manager
 | |
|             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;
 | |
|         }
 | |
|     }
 | |
| }
 |