Interface utilisateur personnalisée (VSPackage de contrôle de code source)
Un VSPackage déclare ses éléments de menu et ses états par défaut via le fichier de table de commandes Visual Studio (.vsct). L’environnement de développement intégré (IDE) Visual Studio affiche les éléments de menu dans leurs états par défaut jusqu’à ce que le VSPackage soit chargé. Par la suite, la QueryStatus méthode est appelée pour activer ou désactiver les éléments de menu.
Un VSPackage peut définir une clé de Registre afin que vsPackage puisse être automatiquement chargé en fonction d’un contexte d’interface utilisateur de commande, bien qu’en général, un VSPackage de contrôle de code source doit se charger à la demande au lieu de passer simplement à un contexte d’interface utilisateur particulier. Pour plus d’informations sur la clé de Registre AutoLoadPackages , consultez Gérer les VSPackages.
Interface utilisateur VSPackage
Un package de contrôle de code source est implémenté en tant que VSPackage et n’utilise aucune interface utilisateur de Visual Studio. Chaque VSPackage de contrôle de code source doit spécifier ses propres éléments d’interface utilisateur tels que les éléments de menu, les groupes de menus, les fenêtres d’outils, les barres d’outils et toute interface utilisateur requise pour définir des options spécifiques au VSPackage du contrôle de code source. Ces éléments d’interface utilisateur peuvent être activés statiquement ou dynamiquement. Les éléments d’interface utilisateur statique sont définis dans un fichier .vsct et s’affichent si vsPackage est chargé ou non. Les éléments d’interface utilisateur dynamique peuvent être visibles en fonction d’un contexte d’interface utilisateur de commande particulier, tel que vsContextNoSolution, ou en raison d’un appel à la QueryStatus méthode. La visibilité des éléments d’interface utilisateur dynamiques est conforme à la stratégie de chargement différé des VSPackages.
Contraintes d’interface utilisateur sur les VSPackages de contrôle de code source
Étant donné que le VSPackage du contrôle de code source ne peut pas être supprimé de l’IDE après son chargement, le VSPackage doit pouvoir entrer un état inactif. Lorsqu’un VSPackage reçoit une notification indiquant qu’il n’est plus actif, vsPackage désactive son interface utilisateur et ignore toute interaction IDE externe. L’implémentation de VSPackage de la QueryStatus méthode doit masquer les commandes lorsque VSPackage n’est pas actif.
Chaque VSPackage du contrôle de code source doit implémenter l’interface IVsSccProvider
. Deux méthodes sur l’interface et SetActive SetInactive, doivent être implémentées par VSPackage.
Le VSPackage du contrôle de code source peut avoir souscrit à différents événements IDE, qui sont implémentés par le IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2et ainsi de suite. En outre, vsPackage a peut-être implémenté des interfaces de rappel compatibles avec le Registre, telles que le IVsSolutionPersistence. Ces interfaces doivent toutes être ignorées lorsqu’elles sont inactives.
La liste suivante montre les interfaces affectées par l’état actif d’un VSPackage de contrôle de code source :
Suivre les événements de documents de projet.
Événements de solution.
Interfaces de persistance de solution. En cas d’inactivité, les packages ne doivent pas écrire dans les fichiers .sln et .suo .
Extendeurs de propriété.
Les interfaces requises IVsQueryEditQuerySave2 et IVsSccManager2, et également toutes les interfaces facultatives associées au contrôle de code source, ne sont pas appelées lorsque le VSPackage du contrôle de code source est inactif.
Au démarrage de l’IDE Visual Studio, Visual Studio définit le contexte de l’interface utilisateur de commande sur l’ID du contrôle de code source par défaut actuel VSPackage. Cela entraîne l’affichage de l’interface utilisateur statique du vsPackage du contrôle de code source actif dans l’IDE sans charger réellement vsPackage. Visual Studio s’interrompt pour que VSPackage s’inscrive auprès de Visual Studio avant IVsRegisterScciProvider d’effectuer des appels au VSPackage.
Le tableau suivant décrit des détails spécifiques sur la façon dont l’IDE Visual Studio masque différents éléments d’interface utilisateur.
Élément d’interface utilisateur | Description |
---|---|
Menus et barres d’outils | Le package de contrôle de code source doit définir les états de visibilité du menu initial et de la barre d’outils sur l’ID du package de contrôle de code source dans la section VisibilityConstraints du fichier .vsct . Cela permet à l’IDE Visual Studio de définir l’état des éléments de menu de manière appropriée sans charger VSPackage et appeler une implémentation de la QueryStatus méthode. |
Fenêtres d’outil | VsPackage du contrôle de code source masque toutes les fenêtres d’outils qu’il possède lorsqu’il est inactif. |
Pages d’options spécifiques à VSPackage du contrôle de code source | La clé de Registre HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts permet à un VSPackage de définir les contextes dans lesquels ses pages d’options doivent être affichées. Une entrée de Registre sous cette clé doit être créée à l’aide de l’ID de service (SID) du service de contrôle de code source et de son affectation d’une valeur DWORD de 1. Chaque fois qu’un événement d’interface utilisateur se produit dans un contexte avec lequel vsPackage de contrôle de code source est inscrit, le VSPackage est appelé s’il est actif. |