| 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 <see href="https://docs.unity3d.com/ScriptReference/MenuItem.html"/>). | |
| /// </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> | |
| [] | |
| 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; | |
| } | |
| } | |
| } | |
| } | |