public static ContextMenuItem CreateAndRegister(VisioShape shape, string eventId, string name, bool isFlyOut = false) { ContextMenuItem menuItem = new ContextMenuItem(shape, eventId, name, isFlyOut); if (!Globals.RationallyAddIn.Application.IsUndoingOrRedoing) { //Assign to local varibale and not field to avoid updatemenuitem being called menuItem.name = name; menuItem.isEnabled = true; menuItem.Shape.AddMenuItem(menuItem); } else { if ( menuItem.Shape.Shape.CellExists[ string.Format(VisioFormulas.Action_Action, menuItem.EventId), (short)VisExistsFlags.visExistsAnywhere] == Constants.CellExists) { menuItem.name = menuItem.Shape.Shape.CellsU[string.Format(VisioFormulas.Action_MenuName, menuItem.EventId)].ResultStr["Value"]; menuItem.isEnabled = !(menuItem.Shape.Shape.CellsU[string.Format(VisioFormulas.Action_Disabled, menuItem.EventId)].ResultIU > 0); } } return(menuItem); }
public void OnContextMenuEvent(Application app, int sequencenum, string contextstring) { try { if (eventRegistry.ContainsKey(contextstring) && !Globals.RationallyAddIn.Application.IsUndoingOrRedoing) { Log.Info($"ContextMenuEvent {contextstring} was fired."); ContextMenuItem item = eventRegistry[contextstring]; item.Action?.Invoke(); } } catch (Exception ex) { Log.Error(ex); throw new RationallyException($"Exception on context menu {contextstring} occured.", ex); } }
public void RegisterMenuEvent(string actionId, ContextMenuItem item) => eventRegistry[actionId] = item;