/// <summary> /// 转换命令状态 /// </summary> /// <param name="cmdViewStatus"></param> /// <returns></returns> public static vsCommandStatus Convert2VsCmdStatus(CommandViewStatus cmdViewStatus) { vsCommandStatus status = vsCommandStatus.vsCommandStatusSupported;; switch (cmdViewStatus) { case CommandViewStatus.Enabled: status |= vsCommandStatus.vsCommandStatusEnabled; break; case CommandViewStatus.Disabled: status = vsCommandStatus.vsCommandStatusSupported; break; case CommandViewStatus.Visible: status |= vsCommandStatus.vsCommandStatusEnabled; break; case CommandViewStatus.Invisible: status |= vsCommandStatus.vsCommandStatusInvisible; break; default: status = vsCommandStatus.vsCommandStatusInvisible; break; } return(status); }
/// <summary> /// constructor 2 /// </summary> /// <param name="key">唯一键值</param> /// <param name="controlType">控件类型</param> /// <param name="iconResource">图标资源索引</param> /// <param name="useMsoButton">使用msobutton</param> /// <param name="position">插入位置</param> /// <param name="tooltip">提示</param> /// <param name="caption">显示文字</param> /// <param name="initViewStatus">初始状态</param> public CommandAttribute(string key, MsoControlType controlType, int iconResource, bool useMsoButton, int position, string tooltip, string caption, CommandViewStatus initViewStatus) { Key = key; ControlType = controlType; IconResource = iconResource; UseMsoButton = useMsoButton; Position = position; Tooltip = tooltip; Caption = caption; }
/// <summary>实现 IDTCommandTarget 接口的 QueryStatus 方法。此方法在更新该命令的可用性时调用</summary> /// <param term='commandName'>要确定其状态的命令的名称。</param> /// <param term='neededText'>该命令所需的文本。</param> /// <param term='viewStatus'>该命令在用户界面中的状态。</param> /// <param term='commandText'>neededText 参数所要求的文本。</param> /// <seealso class='Exec' /> public void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) { if (neededText != vsCommandStatusTextWanted.vsCommandStatusTextWantedNone) { return; } status = vsCommandStatus.vsCommandStatusSupported; if (_dicCommand.ContainsKey(commandName)) { CommandViewStatus cmdViewStatus = _dicCommand[commandName].GetStatus(); status = CommonHelper.Convert2VsCmdStatus(cmdViewStatus); } }
/// <summary> /// 获得命令呈现状态 /// </summary> /// <param name="dteHelper"> </param> /// <returns></returns> public virtual CommandViewStatus GetStatus() { CommandViewStatus viewStatus = CommandViewStatus.Disabled; if (null != _dteHelper.Dte2.ActiveWindow && vsWindowType.vsWindowTypeDocument == _dteHelper.Dte2.ActiveWindow.Type && _dteHelper.Dte2.ActiveWindow.Document.FullName.EndsWith(Constant.CSharpFileExtension)) //csharp文档窗口 { //当前光标处元素是方法 viewStatus = CommandViewStatus.Enabled; } else if (null != _dteHelper.Dte2.ActiveWindow && vsWindowType.vsWindowTypeSolutionExplorer == _dteHelper.Dte2.ActiveWindow.Type && null != CurrentCodeElement) {//解决方案窗口 viewStatus = CommandViewStatus.Enabled; } return(viewStatus); }
/// <summary> /// 转换命令状态 /// </summary> /// <param name="cmdViewStatus"></param> /// <returns></returns> public static vsCommandStatus Convert2VsCmdStatus(CommandViewStatus cmdViewStatus) { vsCommandStatus status = vsCommandStatus.vsCommandStatusSupported; ; switch (cmdViewStatus) { case CommandViewStatus.Enabled: status |= vsCommandStatus.vsCommandStatusEnabled; break; case CommandViewStatus.Disabled: status = vsCommandStatus.vsCommandStatusSupported; break; case CommandViewStatus.Visible: status |= vsCommandStatus.vsCommandStatusEnabled; break; case CommandViewStatus.Invisible: status |= vsCommandStatus.vsCommandStatusInvisible; break; default: status = vsCommandStatus.vsCommandStatusInvisible; break; } return status; }