You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.1 KiB
71 lines
2.1 KiB
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; |
|
} |
|
} |
|
}
|
|
|