private Dictionary <ICommandSpec, int> CreateCommandItems(CommandGroup cmdGroup, int groupId, ICommandSpec[] cmds) { var createdCmds = new Dictionary <ICommandSpec, int>(); var callbackMethodName = nameof(OnCommandClick); var enableMethodName = nameof(OnCommandEnable); for (int i = 0; i < cmds.Length; i++) { var cmd = cmds[i]; swCommandItemType_e menuToolbarOpts = 0; if (cmd.HasMenu) { menuToolbarOpts |= swCommandItemType_e.swMenuItem; } if (cmd.HasToolbar) { menuToolbarOpts |= swCommandItemType_e.swToolbarItem; } if (menuToolbarOpts == 0) { throw new InvalidMenuToolbarOptionsException(cmd); } var cmdName = $"{groupId}.{cmd.UserId}"; m_Commands.Add(cmdName, cmd); var callbackFunc = $"{callbackMethodName}({cmdName})"; var enableFunc = $"{enableMethodName}({cmdName})"; if (cmd.HasSpacer) { cmdGroup.AddSpacer2(-1, (int)menuToolbarOpts); } var cmdIndex = cmdGroup.AddCommandItem2(cmd.Title, -1, cmd.Tooltip, cmd.Title, i, callbackFunc, enableFunc, cmd.UserId, (int)menuToolbarOpts); createdCmds.Add(cmd, cmdIndex); Logger.Log($"Created command {cmdIndex} for {cmd}"); } cmdGroup.HasToolbar = true; cmdGroup.HasMenu = true; cmdGroup.Activate(); return(createdCmds.ToDictionary(p => p.Key, p => cmdGroup.CommandID[p.Value])); }
private Dictionary <CommandSpec, int> CreateCommandItems(SwCommandGroup cmdGroup, int groupId, CommandSpec[] cmds) { var createdCmds = new Dictionary <CommandSpec, int>(); var callbackMethodName = nameof(SwAddInEx.OnCommandClick); var enableMethodName = nameof(SwAddInEx.OnCommandEnable); for (int i = 0; i < cmds.Length; i++) { var cmd = cmds[i]; swCommandItemType_e menuToolbarOpts = 0; if (cmd.HasMenu) { menuToolbarOpts |= swCommandItemType_e.swMenuItem; } if (cmd.HasToolbar) { menuToolbarOpts |= swCommandItemType_e.swToolbarItem; } if (menuToolbarOpts == 0) { throw new InvalidMenuToolbarOptionsException(cmd); } var cmdName = $"{groupId}.{cmd.UserId}"; m_Commands.Add(cmdName, new CommandInfo(cmdGroup, cmd)); var callbackFunc = $"{callbackMethodName}({cmdName})"; var enableFunc = $"{enableMethodName}({cmdName})"; if (cmd.HasSpacer) { cmdGroup.CommandGroup.AddSpacer2(-1, (int)menuToolbarOpts); } var cmdIndex = cmdGroup.CommandGroup.AddCommandItem2(cmd.Title, -1, cmd.Tooltip, cmd.Title, i, callbackFunc, enableFunc, cmd.UserId, (int)menuToolbarOpts); createdCmds.Add(cmd, cmdIndex); m_Logger.Log($"Created command {cmd.Title}:{cmdIndex} for {cmd.UserId}"); } cmdGroup.CommandGroup.HasToolbar = cmds.Any(c => c.HasToolbar); cmdGroup.CommandGroup.HasMenu = cmds.Any(c => c.HasMenu); if (!cmdGroup.CommandGroup.Activate()) { m_Logger.Log("Command group activation failed"); } m_Logger.Log($"Command group-{groupId} Id: {(cmdGroup.CommandGroup.HasToolbar ? cmdGroup.CommandGroup.ToolbarId.ToString() : "No Toolbar")}"); return(createdCmds.ToDictionary(p => p.Key, p => { var cmdId = cmdGroup.CommandGroup.CommandID[p.Value]; m_Logger.Log($"Command-{p.Value} Id: {cmdId}"); return cmdId; })); }
private void CreateCommandItems(CommandGroup cmdGroup, int groupId, Enum[] cmds, Delegate callbackMethod, Delegate enableMethod) { var callbackMethodName = nameof(OnCommandClick); var enableMethodName = nameof(OnCommandEnable); for (int i = 0; i < cmds.Length; i++) { var cmd = cmds[i]; var cmdTitle = ""; var cmdToolTip = ""; swCommandItemType_e menuToolbarOpts = 0; swWorkspaceTypes_e suppWorkSpaces = 0; if (!cmd.TryGetAttribute <DisplayNameAttribute>( att => cmdTitle = att.DisplayName)) { cmdTitle = cmd.ToString(); } if (!cmd.TryGetAttribute <DescriptionAttribute>( att => cmdToolTip = att.Description)) { cmdToolTip = cmd.ToString(); } if (!cmd.TryGetAttribute <CommandItemInfoAttribute>( att => { if (att.HasMenu) { menuToolbarOpts |= swCommandItemType_e.swMenuItem; } if (att.HasToolbar) { menuToolbarOpts |= swCommandItemType_e.swToolbarItem; } suppWorkSpaces = att.SupportedWorkspaces; })) { menuToolbarOpts = swCommandItemType_e.swMenuItem | swCommandItemType_e.swToolbarItem; suppWorkSpaces = swWorkspaceTypes_e.All; } if (menuToolbarOpts == 0) { throw new InvalidMenuToolbarOptionsException(cmd); } var cmdId = Convert.ToInt32(cmd); var cmdName = $"{groupId}.{cmdId}"; m_CachedCmdsEnable.Add(cmdName, suppWorkSpaces); m_CallbacksParams.Add(cmdName, new Tuple <Delegate, Enum>(callbackMethod, cmd)); if (enableMethod != null) { m_EnableParams.Add(cmdName, new Tuple <Delegate, Enum>(enableMethod, cmd)); } var callbackFunc = $"{callbackMethodName}({cmdName})"; var enableFunc = $"{enableMethodName}({cmdName})"; cmdGroup.AddCommandItem2(cmdTitle, -1, cmdToolTip, cmdTitle, i, callbackFunc, enableFunc, cmdId, (int)menuToolbarOpts); } }
private void CreateCommandItems(SwCommandGroup parentGroup) { var cmdGrpSpec = parentGroup.Spec; var cmdGrp = parentGroup.CommandGroup; int groupId = cmdGrpSpec.Id; var cmds = cmdGrpSpec.Commands; var dupIds = cmds.Where(c => c.UserId > 0).GroupBy(c => c.UserId).Where(g => g.Count() > 1).ToArray(); if (dupIds.Any()) { throw new DuplicateCommandUserIdsException(cmdGrpSpec.Title, groupId, dupIds.Select(x => x.Key).ToArray()); } var createdCmds = new List <Tuple <CommandSpec, int, string> >(); var callbackMethodName = nameof(SwAddInEx.OnCommandClick); var enableMethodName = nameof(SwAddInEx.OnCommandEnable); for (int i = 0; i < cmds.Length; i++) { var cmd = cmds[i]; swCommandItemType_e menuToolbarOpts = 0; if (cmd.HasMenu) { menuToolbarOpts |= swCommandItemType_e.swMenuItem; } if (cmd.HasToolbar) { menuToolbarOpts |= swCommandItemType_e.swToolbarItem; } if (menuToolbarOpts == 0) { throw new InvalidMenuToolbarOptionsException(cmd); } var cmdName = $"{groupId}.{cmd.UserId}"; var callbackFunc = $"{callbackMethodName}({cmdName})"; var enableFunc = $"{enableMethodName}({cmdName})"; if (cmd.HasSpacer) { cmdGrp.AddSpacer2(-1, (int)menuToolbarOpts); } var cmdIndex = cmdGrp.AddCommandItem2(cmd.Title, -1, cmd.Tooltip, cmd.Title, i, callbackFunc, enableFunc, cmd.UserId, (int)menuToolbarOpts); createdCmds.Add(new Tuple <CommandSpec, int, string>(cmd, cmdIndex, cmdName)); m_Logger.Log($"Created command {cmd.Title}:{cmdIndex} for {cmd.UserId}", LoggerMessageSeverity_e.Debug); } cmdGrp.HasToolbar = cmds.Any(c => c.HasToolbar); cmdGrp.HasMenu = cmds.Any(c => c.HasMenu); if (!cmdGrp.Activate()) { m_Logger.Log("Command group activation failed", LoggerMessageSeverity_e.Error); } m_Logger.Log($"Command group-{groupId} Id: {(cmdGrp.HasToolbar ? cmdGrp.ToolbarId.ToString() : "No Toolbar")}", LoggerMessageSeverity_e.Debug); foreach (var createdCmd in createdCmds) { var cmdId = cmdGrp.CommandID[createdCmd.Item2]; var cmdInfo = new CommandInfo(createdCmd.Item1, parentGroup, cmdId); m_Commands.Add(createdCmd.Item3, cmdInfo); } }