internal SwCommandGroup AddCommandGroupOrContextMenu(CommandGroupSpec cmdBar, bool isContextMenu, swSelectType_e?contextMenuSelectType) { m_Logger.Log($"Creating command group: {cmdBar.Id}", LoggerMessageSeverity_e.Debug); if (m_CommandBars.FirstOrDefault(b => b.Spec.Id == cmdBar.Id) != null) { throw new GroupIdAlreadyExistsException(cmdBar); } var title = GetMenuPath(cmdBar); var cmdGroup = CreateCommandGroup(cmdBar.Id, title, cmdBar.Tooltip, cmdBar.Commands.Select(c => c.UserId).ToArray(), isContextMenu, contextMenuSelectType); using (var iconsConv = m_SvcProvider.GetService <IIconsCreator>()) { CreateIcons(cmdGroup, cmdBar, iconsConv); var bar = new SwCommandGroup(m_App, cmdBar, cmdGroup, isContextMenu); CreateCommandItems(bar); m_CommandBars.Add(bar); return(bar); } }
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 {cmdIndex} for {cmd}"); } cmdGroup.CommandGroup.HasToolbar = true; cmdGroup.CommandGroup.HasMenu = true; cmdGroup.CommandGroup.Activate(); return(createdCmds.ToDictionary(p => p.Key, p => cmdGroup.CommandGroup.CommandID[p.Value])); }
internal SwCommandGroup AddCommandGroupOrContextMenu(CommandGroupSpec cmdBar, bool isContextMenu, swSelectType_e?contextMenuSelectType) { m_Logger.Log($"Creating command group: {cmdBar.Id}"); if (m_CommandBars.FirstOrDefault(b => b.Spec.Id == cmdBar.Id) != null) { throw new GroupIdAlreadyExistsException(cmdBar); } var title = GetMenuPath(cmdBar); var cmdGroup = CreateCommandGroup(cmdBar.Id, title, cmdBar.Tooltip, cmdBar.Commands.Select(c => c.UserId).ToArray(), isContextMenu, contextMenuSelectType); var bar = new SwCommandGroup(m_App, cmdBar, cmdGroup); m_CommandBars.Add(bar); using (var iconsConv = new IconsConverter()) { CreateIcons(cmdGroup, cmdBar, iconsConv); var createdCmds = CreateCommandItems(bar, cmdBar.Id, cmdBar.Commands); var tabGroup = GetRootCommandGroup(cmdBar); try { CreateCommandTabBox(tabGroup, createdCmds); } catch (Exception ex) { m_Logger.Log(ex); //not critical error - continue operation } } return(bar); }
internal CommandInfo(SwCommandGroup grp, CommandSpec spec) { Grp = grp; Spec = spec; }
internal CommandInfo(CommandSpec spec, SwCommandGroup parent, int commandId) { Spec = spec; Group = parent; CommandId = commandId; }
internal TabCommandGroupInfo(SwCommandGroup group) { Group = group; Commands = new List <TabCommandInfo>(); }
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); } }
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}", LoggerMessageSeverity_e.Debug); } 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", LoggerMessageSeverity_e.Error); } m_Logger.Log($"Command group-{groupId} Id: {(cmdGroup.CommandGroup.HasToolbar ? cmdGroup.CommandGroup.ToolbarId.ToString() : "No Toolbar")}", LoggerMessageSeverity_e.Debug); return(createdCmds.ToDictionary(p => p.Key, p => { var cmdId = cmdGroup.CommandGroup.CommandID[p.Value]; m_Logger.Log($"Command-{p.Value} Id: {cmdId}", LoggerMessageSeverity_e.Debug); return cmdId; })); }