52 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace UnityEditor.Timeline.Actions
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Use this attribute to add a menu item to a context menu.
 | |
|     /// Used to indicate path and priority that are auto added to the menu
 | |
|     /// (examples can be found on <a href="https://docs.unity3d.com/ScriptReference/MenuItem.html">this page</a>).
 | |
|     /// </summary>
 | |
|     /// <example>
 | |
|     /// <code source="../../DocCodeExamples/TimelineAttributesExamples.cs" region="declare-menuEntryAttribute" title="menuEntryAttr"/>
 | |
|     /// </example>
 | |
|     /// <remarks>
 | |
|     /// Unlike Menu item, MenuEntryAttribute doesn't handle shortcuts in the menu name. See <see cref="TimelineShortcutAttribute"/>.
 | |
|     /// </remarks>
 | |
|     [AttributeUsage(AttributeTargets.Class)]
 | |
|     public class MenuEntryAttribute : Attribute
 | |
|     {
 | |
|         internal readonly int priority;
 | |
|         internal readonly string name;
 | |
|         internal readonly string subMenuPath;
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Constructor for Menu Entry Attribute to define information about the menu item for an action.
 | |
|         /// </summary>
 | |
|         /// <param name="path">Path to the menu. If there is a "/" in the path, it will create one (or multiple) submenu items.</param>
 | |
|         /// <param name="priority">Priority to decide where the menu will be positioned in the menu.
 | |
|         /// The lower the priority, the higher the menu item will be in the context menu.
 | |
|         /// </param>
 | |
|         /// <seealso cref="MenuPriority"/>
 | |
|         public MenuEntryAttribute(string path = default, int priority = MenuPriority.defaultPriority)
 | |
|         {
 | |
|             path = path ?? string.Empty;
 | |
|             path = L10n.Tr(path);
 | |
|             this.priority = priority;
 | |
| 
 | |
|             var index = path.LastIndexOf('/');
 | |
|             if (index >= 0)
 | |
|             {
 | |
|                 name = (index == path.Length - 1) ? string.Empty : path.Substring(index + 1);
 | |
|                 subMenuPath = path.Substring(0, index + 1);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 name = path;
 | |
|                 subMenuPath = string.Empty;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |