Beispiel #1
0
        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]));
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #4
0
        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);
            }
        }