public int QueryStatus(AnkhContext context, uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText) { if (context == null) { throw new ArgumentNullException("context"); } else if (cCmds != 1 || prgCmds == null) { return(-1); } TextQueryType textQuery = TextQueryType.None; if (pCmdText != IntPtr.Zero) { // VS Want's some text from us for either the statusbar or the command text OLECMDTEXTF textType = GetFlags(pCmdText); switch (textType) { case OLECMDTEXTF.OLECMDTEXTF_NAME: textQuery = TextQueryType.Name; break; case OLECMDTEXTF.OLECMDTEXTF_STATUS: textQuery = TextQueryType.Status; break; } } CommandUpdateEventArgs updateArgs = new CommandUpdateEventArgs((AnkhCommand)prgCmds[0].cmdID, context, textQuery); OLECMDF cmdf = OLECMDF.OLECMDF_SUPPORTED; if (PerformUpdate(updateArgs.Command, updateArgs)) { updateArgs.UpdateFlags(ref cmdf); } if (updateArgs.DynamicMenuEnd) { return(VSErr.OLECMDERR_E_NOTSUPPORTED); } if (textQuery != TextQueryType.None && !string.IsNullOrEmpty(updateArgs.Text)) { SetText(pCmdText, updateArgs.Text); } if (_customizeMode && updateArgs.Command != AnkhCommand.ForceUIShow) { prgCmds[0].cmdf = (uint)(cmdf & ~OLECMDF.OLECMDF_INVISIBLE); } else { prgCmds[0].cmdf = (uint)cmdf; } return(0); // S_OK }
public OLECMDTEXT(OLECMDTEXTF cmdtextf, string nameOrStatus) { this.cmdtextf = cmdtextf; if (nameOrStatus != null) { rgwz = nameOrStatus; } }
/// <summary> /// Gets the flags of the OLECMDTEXT structure /// </summary> /// <param name="pCmdTextInt">The structure to read.</param> /// <returns>The value of the flags.</returns> static OLECMDTEXTF GetFlags(IntPtr pCmdTextInt) { OLECMDTEXTF cmdtextf = (OLECMDTEXTF)Marshal.ReadInt32(pCmdTextInt, _offset_cmdtextf); if ((cmdtextf & OLECMDTEXTF.OLECMDTEXTF_NAME) != 0) { return(OLECMDTEXTF.OLECMDTEXTF_NAME); } if ((cmdtextf & OLECMDTEXTF.OLECMDTEXTF_STATUS) != 0) { return(OLECMDTEXTF.OLECMDTEXTF_STATUS); } return(OLECMDTEXTF.OLECMDTEXTF_NONE); }