Editar e salvar consulta (VSPackage de controle do código-fonte)
Os editores do Visual Studio podem transmitir eventos QEQS (Query Edit Query Save). Visual Studio Source Control Stub implementa o serviço QEQS, para que ele seja o destinatário de eventos QEQS. Esses eventos são delegados ao controle de origem atualmente ativo VSPackage. O controle de origem ativo VSPackage implementa o IVsQueryEditQuerySave2 e seus métodos. Os métodos da interface são normalmente chamados imediatamente antes de um documento ser editado pela primeira vez e imediatamente antes de IVsQueryEditQuerySave2
um documento ser salvo.
QueryEditQuerySave Eventos
O controle de origem VSPackage deve manipular os eventos QEQS implementando a 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 do código-fonte.
Método QueryEditFiles
O QueryEditFiles é chamado quando qualquer projeto ou editor deseja modificar um arquivo. Idealmente, esse método é chamado antes que o arquivo seja modificado e quando um arquivo é salvo. Quando invocado, o IVsQueryEditQuerySave2::QueryEditFiles
método verifica se os arquivos fornecidos estão sob controle de origem, se precisam ser verificados e se podem ser recarregados. Se as circunstâncias impedirem que os arquivos sejam editáveis, o IVsQueryEditQuerySave2::QueryEditFiles
método diz ao programa de chamada para cancelar a edição. Também é possível para o chamador especificar um modo de invocação. No modo "silencioso", esse método executa uma ação somente se não fizer com que nenhuma interface do usuário apareça. Se a interface do usuário for inevitável, um sinalizador deverá ser retornado para indicar o problema.
O método se comporta de maneira transacional; ou seja, se a edição for cancelada em um único arquivo, a edição será cancelada para todos os arquivos. Por outro lado, se a edição for permitida, ela será permitida para todos os arquivos. Se esse método permite a edição uma vez para um determinado conjunto de arquivos, ele sempre deve permitir a edição em chamadas subsequentes para o mesmo conjunto de arquivos. O loop allow-edit continua até que os arquivos sejam fechados, salvos e recarregados; até que seus atributos (propriedades) mudem; ou até que o pacote de controle do código-fonte seja alterado. Os casos a serem considerados na implementação do método incluem vários arquivos, arquivos especiais, cancelamento do IVsQueryEditQuerySave2::QueryEditFiles
usuário e edições na memória.
Método QuerySaveFiles
O QuerySaveFiles é chamado quando qualquer projeto ou editor precisa salvar um conjunto de arquivos. Quando invocado, o IVsQueryEditQuerySave2::QuerySaveFiles
método verifica se os arquivos fornecidos são somente leitura e se estão sob controle do código-fonte. Se for necessário fazer check-out dos arquivos, a chamada será delegada ao pacote de controle do código-fonte. Se as circunstâncias impedirem que os arquivos sejam salvos, o método deve dizer ao editor para cancelar o IVsQueryEditQuerySave2::QuerySaveFiles
salvamento. Assim como no IVsQueryEditQuerySave2::QueryEditFiles
método, é possível que o chamador especifique um modo de invocação. No modo "silencioso", esse método executa uma ação somente se não fizer com que nenhuma interface do usuário apareça. Se a interface do usuário for inevitável, um sinalizador deverá ser retornado para indicar o problema.
Esse método deve se comportar de maneira transacional; ou seja, se o salvamento for cancelado em um único arquivo, o salvamento será cancelado para todos os arquivos. Por outro lado, se o salvamento for permitido, ele deve ser permitido para todos os arquivos. Assim como acontece com o IVsQueryEditQuerySave2::QueryEditFiles
método, os casos a serem considerados na implementação do método incluem vários arquivos, arquivos especiais, cancelamento do IVsQueryEditQuerySave2::QuerySaveFiles
usuário e edições na memória.