Partilhar via


Interface de usuário personalizada (controle de origem VSPackage)

Um VSPackage declara seus itens de menu e seus estados padrão por meio do arquivo de tabela de comandos (.vsct) do Visual Studio. O ambiente de desenvolvimento integrado (IDE) do Visual Studio exibe os itens de menu em seus estados padrão até que o VSPackage é carregado. Posteriormente, o QueryStatus método é chamado para habilitar ou desabilitar itens de menu.

Um VSPackage pode definir uma chave do Registro para que o VSPackage possa ser carregado automaticamente dependendo de um contexto de interface do usuário (UI) de comando, embora normalmente um VSPackage de controle de origem deva ser carregado sob demanda em vez de apenas alternar para um contexto de interface do usuário específico. Para obter mais informações sobre a chave do Registro AutoLoadPackages , consulte Gerenciar VSPackages.

Interface do usuário do VSPackage

Um pacote de controle de origem é implementado como um VSPackage e não usa qualquer interface do usuário do Visual Studio. Cada VSPackage de controle de origem deve especificar seus próprios elementos de interface do usuário, como itens de menu, grupos de menus, janelas de ferramentas, barras de ferramentas e qualquer interface do usuário necessária para definir opções específicas para o VSPackage de controle de origem. Esses elementos da interface do usuário podem ser habilitados estática ou dinamicamente. Os elementos estáticos da interface do usuário são definidos em um arquivo .vsct e exibidos independentemente de o VSPackage estar carregado ou não. Os elementos dinâmicos da interface do usuário podem ser visíveis dependendo de um contexto específico da interface do usuário do comando, como , ou como vsContextNoSolutionresultado de uma chamada para o QueryStatus método. A visibilidade dos elementos dinâmicos da interface do usuário está em conformidade com a estratégia para carregamento atrasado de VSPackages.

Restrições de interface do usuário em VSPackages de controle de origem

Como o controle de origem VSPackage não pode ser removido do IDE depois de carregado, o VSPackage deve ser capaz de entrar em um estado inativo. Quando um VSPackage recebe notificação de que ele não está mais ativo, o VSPackage desabilita sua interface do usuário e ignora qualquer interação IDE externa. A implementação do QueryStatus método VSPackage deve ocultar comandos quando o VSPackage não está ativo.

Todo controle de origem VSPackage deve implementar a IVsSccProvider interface. Dois métodos na interface SetActive e SetInactive, devem ser implementados pelo VSPackage.

O controle de origem VSPackage pode ter se inscrito em vários eventos IDE, que são implementados pelo , IVsTrackProjectDocumentsEvents2e assim por IVsSolutionEvents3diante. Além disso, o VSPackage pode ter implementado interfaces de retorno de chamada habilitadas para o Registro, como o IVsSolutionPersistence. Todas essas interfaces devem ser ignoradas quando inativas.

A lista a seguir mostra as interfaces afetadas pelo estado ativo de um VSPackage de controle de origem:

  • Acompanhe eventos de documentos do projeto.

  • Eventos da solução.

  • Interfaces de persistência de solução. Quando inativos, os pacotes não devem gravar em arquivos .sln e .suo .

  • Extensores de propriedade.

    As interfaces necessárias IVsQueryEditQuerySave2 e IVsSccManager2, e também quaisquer interfaces opcionais associadas ao controle do código-fonte, não são chamadas quando o VSPackage do controle do código-fonte está inativo.

    Quando o IDE do Visual Studio é iniciado, o Visual Studio define o contexto da interface do usuário do comando para a ID do VSPackage de controle de origem padrão atual. Isso faz com que a interface do usuário estática do controle de origem ativo VSPackage apareça no IDE sem realmente carregar o VSPackage. O Visual Studio pausa para que o VSPackage se registre com o Visual Studio por meio do antes de fazer qualquer chamada para o IVsRegisterScciProvider VSPackage.

    A tabela a seguir descreve detalhes específicos sobre como o IDE do Visual Studio oculta diferentes itens da interface do usuário.

Item da interface do usuário Descrição
Menus e barras de ferramentas O pacote de controle do código-fonte deve definir os estados de visibilidade do menu inicial e da barra de ferramentas para a ID do pacote de controle do código-fonte na seção VisibilityConstraints do arquivo .vsct . Isso permite que o IDE do Visual Studio defina o estado dos itens de menu apropriadamente sem carregar o VSPackage e chamar uma implementação do QueryStatus método.
Janelas da ferramenta O controle de origem VSPackage oculta todas as janelas de ferramentas que possui quando ele é tornado inativo.
Páginas de opções específicas do VSPackage de controle do código-fonte A chave do Registro HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts permite que um VSPackage defina os contextos nos quais ele requer que suas páginas de opções sejam exibidas. Uma entrada do Registro sob essa chave teria que ser criada usando a ID de serviço (SID) do serviço de controle de origem e atribuindo-lhe um valor DWORD de 1. Sempre que um evento de interface do usuário ocorre em um contexto com o qual o controle de origem VSPackage está registrado, o VSPackage será chamado se estiver ativo.