Editar consulta salvar (controle de origem VSPackage)
Visual Studioeditores podem transmitir eventos consulta Editar consulta salvar (QEQS). Visual StudioStub de controle de origem implementa o serviço QEQS, para que ele seja o destinatário de eventos QEQS. Esses eventos são então delegados VSPackage de controle de origem ativo no momento. O controle de fonte ativa VSPackage implementa o IVsQueryEditQuerySave2 e seus métodos. Os métodos da IVsQueryEditQuerySave2 interface são normalmente chamados de imediatamente antes de um documento é editado pela primeira vez e imediatamente antes de um documento for salvo.
Eventos de QueryEditQuerySave
O controle de origem VSPackage deve manipular os eventos QEQS, Implementando o IVsQueryEditQuerySave2 interface e os métodos necessários. Abaixo está uma breve descrição dos dois métodos que o VSPackage deve implementar no mínimo. A implementação real deve estar de acordo com a lógica do modelo de controle de origem.
Método QueryEditFiles
O QueryEditFiles é chamado quando qualquer editor ou projeto quer modificar um arquivo. O ideal é que esse método é chamado antes de o arquivo é modificado e quando um arquivo é salvo. Quando invocado, o IVsQueryEditQuerySave2::QueryEditFiles método verifica se os arquivos de determinado estão sob controle de origem, se eles precisam de check-out e se pode ser recarregados. Se circunstâncias impedem que os arquivos que estão sendo editável, o IVsQueryEditQuerySave2::QueryEditFiles método informa ao programa de chamada para cancelar a edição. Também é possível que o chamador pode especificar um modo de chamada. No modo "silencioso", este método age apenas se ele não causa qualquer interface do usuário seja exibido. Se a interface do usuário é inevitável, um sinalizador deve ser retornado para indicar o problema.
O método se comporta de maneira transacional; ou seja, se a edição é cancelada em um único arquivo, a edição é cancelada para todos os arquivos. Por outro lado, se a edição é permitida, é permitida para todos os arquivos. Se esse método permite a edição de uma vez para um determinado conjunto de arquivos, ele sempre deve permitir a edição em chamadas subseqüentes para o mesmo conjunto de arquivos. O loop de permitir edição continua até que os arquivos estão fechados, salvos e recarregados. até que a altere seus atributos (Propriedades); ou, até que o pacote de controle de origem seja alterado. Casos a serem considerados na implementação do IVsQueryEditQuerySave2::QueryEditFiles método incluir vários arquivos, arquivos especiais, Cancelar de usuário e edições de memória.
Método QuerySaveFiles
O QuerySaveFiles é chamado quando qualquer editor ou projeto precisa salvar um conjunto de arquivos. Quando invocado, o IVsQueryEditQuerySave2::QuerySaveFiles método verifica se os arquivos de determinado são somente leitura e que estão sob controle de origem. Se os arquivos necessário fazer check-out, a chamada é delegada para o pacote de controle de origem. Se circunstâncias impedir que os arquivos sejam salvas, o IVsQueryEditQuerySave2::QuerySaveFiles método deve informar o editor para cancelar o salvamento. Como ocorre com o IVsQueryEditQuerySave2::QueryEditFiles método, é possível que o chamador pode especificar um modo de chamada. No modo "silencioso", este método age apenas se ele não causa qualquer interface do usuário seja exibido. Se a interface do usuário é inevitável, um sinalizador deve ser retornado para indicar o problema.
Esse método deve se comportar de maneira transacional; ou seja, se a gravação for cancelada em um único arquivo, salvar será cancelada para todos os arquivos. Por outro lado, se a gravação for permitida, ele deve ser permitido para todos os arquivos. Como ocorre com o IVsQueryEditQuerySave2::QueryEditFiles método, os casos a serem considerados na implementação do IVsQueryEditQuerySave2::QuerySaveFiles método incluir vários arquivos, arquivos especiais, Cancelar de usuário e edições de memória.