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.
85 lines
2.5 KiB
85 lines
2.5 KiB
using PlasticGui; |
|
using System; |
|
using System.Reflection; |
|
|
|
using UnityEngine; |
|
|
|
namespace Unity.PlasticSCM.Editor.UI |
|
{ |
|
internal static class HandleMenuItem |
|
{ |
|
internal static void AddMenuItem( |
|
string name, |
|
int priority, |
|
Action execute, |
|
Func<bool> validate) |
|
{ |
|
AddMenuItem(name, string.Empty, priority, execute, validate); |
|
} |
|
|
|
internal static void AddMenuItem( |
|
string name, |
|
string shortcut, |
|
int priority, |
|
Action execute, |
|
Func<bool> validate) |
|
{ |
|
MethodInfo InternalAddMenuItem = MenuType.GetMethod( |
|
"AddMenuItem", |
|
BindingFlags.Static | BindingFlags.NonPublic); |
|
|
|
if (InternalAddMenuItem == null) |
|
{ |
|
Debug.LogWarningFormat( |
|
PlasticLocalization.GetString( |
|
PlasticLocalization.Name.ErrorAddPlasticSCMMenuItem), |
|
name); |
|
return; |
|
} |
|
|
|
InternalAddMenuItem.Invoke( |
|
null, new object[] { |
|
name, shortcut, false, |
|
priority, execute, validate }); |
|
} |
|
|
|
internal static void RemoveMenuItem(string name) |
|
{ |
|
MethodInfo InternalRemoveMenuItem = MenuType.GetMethod( |
|
"RemoveMenuItem", |
|
BindingFlags.Static | BindingFlags.NonPublic); |
|
|
|
if (InternalRemoveMenuItem == null) |
|
{ |
|
Debug.LogWarningFormat( |
|
PlasticLocalization.GetString( |
|
PlasticLocalization.Name.ErrorRemovePlasticSCMMenuItem), |
|
name); |
|
return; |
|
} |
|
|
|
InternalRemoveMenuItem.Invoke( |
|
null, new object[] { name }); |
|
} |
|
|
|
internal static void UpdateAllMenus() |
|
{ |
|
MethodInfo InternalUpdateAllMenus = EditorUtilityType.GetMethod( |
|
"Internal_UpdateAllMenus", |
|
BindingFlags.Static | BindingFlags.NonPublic); |
|
|
|
if (InternalUpdateAllMenus == null) |
|
{ |
|
Debug.LogWarning( |
|
PlasticLocalization.GetString( |
|
PlasticLocalization.Name.ErrorUpdatePlasticSCMMenus)); |
|
return; |
|
} |
|
|
|
InternalUpdateAllMenus.Invoke(null, null); |
|
} |
|
|
|
static readonly Type MenuType = typeof(UnityEditor.Menu); |
|
static readonly Type EditorUtilityType = typeof(UnityEditor.EditorUtility); |
|
} |
|
}
|
|
|