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])); }
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 }); } }