Interfaccia utente personalizzata (VSPackage del controllo del codice sorgente)
Un VSPackage dichiara le voci di menu e i relativi stati predefiniti tramite il file della tabella dei comandi di Visual Studio (con estensione vsct). L'ambiente di sviluppo integrato (IDE) di Visual Studio visualizza le voci di menu nei relativi stati predefiniti fino a quando non viene caricato il pacchetto VSPackage. Successivamente, il QueryStatus metodo viene chiamato per abilitare o disabilitare le voci di menu.
Un VSPackage può impostare una chiave del Registro di sistema in modo che il VSPackage possa essere caricato automaticamente a seconda di un contesto dell'interfaccia utente del comando, anche se in genere un VSPackage di controllo del codice sorgente deve essere caricato su richiesta anziché semplicemente passare a un contesto dell'interfaccia utente specifico. Per altre informazioni sulla chiave del Registro di sistema AutoLoadPackages , vedere Gestire pacchetti VSPackage.
Interfaccia utente vsPackage
Un pacchetto di controllo del codice sorgente viene implementato come VSPackage e non usa alcuna interfaccia utente di Visual Studio. Ogni pacchetto VSPackage per il controllo del codice sorgente deve specificare elementi dell'interfaccia utente specifici, ad esempio voci di menu, gruppi di menu, finestre degli strumenti, barre degli strumenti e qualsiasi interfaccia utente necessaria per impostare opzioni specifiche per il pacchetto VSPackage del controllo del codice sorgente. Questi elementi dell'interfaccia utente possono essere abilitati in modo statico o dinamico. Gli elementi dell'interfaccia utente statici vengono definiti in un file con estensione vsct e vengono visualizzati se il VSPackage viene caricato o meno. Gli elementi dinamici dell'interfaccia utente possono essere visibili a seconda di un particolare contesto dell'interfaccia utente dei comandi, ad esempio vsContextNoSolution, o come risultato di una chiamata al QueryStatus metodo . La visibilità degli elementi dinamici dell'interfaccia utente è conforme alla strategia per il caricamento ritardato dei pacchetti VSPackage.
Vincoli dell'interfaccia utente nei pacchetti VSPackage per il controllo del codice sorgente
Poiché il pacchetto VSPackage del controllo del codice sorgente non può essere rimosso dall'IDE dopo il caricamento, il pacchetto VSPackage deve essere in grado di immettere uno stato inattivo. Quando un VSPackage riceve una notifica che non è più attiva, il VSPackage disabilita l'interfaccia utente e ignora qualsiasi interazione IDE esterna. L'implementazione del vspackage del QueryStatus metodo deve nascondere i comandi quando il VSPackage non è attivo.
Ogni pacchetto VSPackage del controllo del codice sorgente deve implementare l'interfaccia IVsSccProvider
. Due metodi nell'interfaccia e SetActive SetInactive, devono essere implementati dal VSPackage.
Il pacchetto VSPackage del controllo del codice sorgente può avere sottoscritto vari eventi IDE, implementati da IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2e così via. Inoltre, il VSPackage potrebbe aver implementato interfacce di callback abilitate per il IVsSolutionPersistenceRegistro di sistema, ad esempio . Queste interfacce devono essere tutte ignorate quando sono inattive.
L'elenco seguente mostra le interfacce interessate dallo stato attivo di un pacchetto VSPackage del controllo del codice sorgente:
Tenere traccia degli eventi dei documenti del progetto.
Eventi della soluzione.
Interfacce di persistenza della soluzione. In caso di inattività, i pacchetti non devono scrivere nei file con estensione sln e suo .
Estensioni delle proprietà.
Le interfacce obbligatorie IVsQueryEditQuerySave2 e IVsSccManager2, e anche eventuali interfacce facoltative associate al controllo del codice sorgente, non vengono chiamate quando il vsPackage del controllo del codice sorgente è inattivo.
All'avvio dell'IDE di Visual Studio, Visual Studio imposta il contesto dell'interfaccia utente del comando sull'ID del controllo del codice sorgente predefinito corrente VSPackage ID. In questo modo l'interfaccia utente statica del vsPackage del controllo del codice sorgente attivo viene visualizzata nell'IDE senza caricare effettivamente il pacchetto VSPackage. Visual Studio sospende la registrazione del VSPackage con Visual Studio tramite IVsRegisterScciProvider prima di effettuare chiamate al VSPackage.
Nella tabella seguente vengono descritti dettagli specifici sul modo in cui l'IDE di Visual Studio nasconde diversi elementi dell'interfaccia utente.
Elemento dell'interfaccia utente | Descrizione |
---|---|
Menu e barre degli strumenti | Il pacchetto del controllo del codice sorgente deve impostare lo stato di visibilità del menu iniziale e della barra degli strumenti sull'ID del pacchetto del controllo del codice sorgente nella sezione VisibilityConstraints del file vsct . In questo modo l'IDE di Visual Studio può impostare lo stato delle voci di menu in modo appropriato senza caricare il pacchetto VSPackage e chiamare un'implementazione del QueryStatus metodo . |
Finestre degli strumenti | Il pacchetto VSPackage del controllo del codice sorgente nasconde tutte le finestre degli strumenti di cui è proprietario quando viene reso inattivo. |
Pagine di opzioni specifiche del controllo del codice sorgente VSPackage | La chiave del Registro di sistema HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts consente a un VSPackage di impostare i contesti in cui richiede la visualizzazione delle relative pagine di opzioni. Una voce del Registro di sistema in questa chiave deve essere creata usando l'ID servizio (SID) del servizio di controllo del codice sorgente e assegnandolo un valore DWORD pari a 1. Ogni volta che si verifica un evento dell'interfaccia utente in un contesto in cui viene registrato il vsPackage del controllo del codice sorgente, il VSPackage verrà chiamato se è attivo. |