Ejemplo n.º 1
0
        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
        }
Ejemplo n.º 2
0
 public OLECMDTEXT(OLECMDTEXTF cmdtextf, string nameOrStatus)
 {
     this.cmdtextf = cmdtextf;
     if (nameOrStatus != null)
     {
         rgwz = nameOrStatus;
     }
 }
Ejemplo n.º 3
0
        /// <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);
        }