Exemplo n.º 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]));
        }
Exemplo n.º 2
0
        public void CreerMenu()
        {
            try
            {
                int cmdGroupErr = 0;
                CmdGrp = CmdMgr.CreateCommandGroup2(Id, Titre, Info, Info, -1, true, ref cmdGroupErr);
                Log.Message("   " + Titre);
                Log.Message("      Création : " + (swCreateCommandGroupErrors)cmdGroupErr);

                // Création des icons
                CmdGrp.IconList     = CreerIcons();
                CmdGrp.MainIconList = CmdGrp.IconList;

                // Nb de cmde dans le menu
                var index = 0;
                // Ajout des commandes du menu
                foreach (var listeCmd in ListeGrp)
                {
                    index += listeCmd.Count;
                    foreach (var Cmd in listeCmd)
                    {
                        Cmd.Ajouter(CmdGrp);
                    }
                }

                // On parcours les commandes à l'envers pour y inserer les séparateurs
                for (int i = ListeGrp.Count - 1; i > 0; i--)
                {
                    var listeCmd = ListeGrp[i];
                    index -= listeCmd.Count;
                    CmdGrp.AddSpacer2(index, (int)swCommandItemType_e.swMenuItem);

                    // On met à jour l'index en fonction du nb de séparateur ajouté
                    foreach (var cmd in listeCmd)
                    {
                        cmd.CommandIndex += i;
                    }
                }

                // On active le groupe
                CmdGrp.HasToolbar = true;
                CmdGrp.HasMenu    = true;
                CmdGrp.Activate();

                // Mise à jour des CommandId après activation des menus
                foreach (var listeCmd in ListeGrp)
                {
                    foreach (var Cmd in listeCmd)
                    {
                        Cmd.SetCommandId(CmdGrp);
                        Log.Message("        " + Cmd.Titre + "-> " + Cmd.CommandId + " // " + Cmd.AddinId);
                    }
                }



                CmdGrp.Activate();
            }
            catch (Exception e)
            { this.LogMethode(new Object[] { e }); }
        }