interface utilisateur personnalisée (contrôle de code source VSPackage)
Un VSPackage déclare ses éléments de menu et leur état par défaut via la commande Visual Studio présentent le fichier (.vsct). L'environnement de développement intégré (IDE) de (IDE) Visual Studio affiche les éléments de menu dans leurs rapports par défaut jusqu'à ce que le VSPackage chargé. Ensuite, la méthode d' QueryStatus est appelée pour activer ou désactiver des éléments de menu.
Un VSPackage peut définir une clé de Registre afin que le VSPackage peut être automatiquement chargé en fonction d'un contexte de l' (UI)interface utilisateur de commande, bien qu'en général un contrôle de code source VSPackage doit charger à la demande au lieu de basculer uniquement à un contexte particulier d'interface utilisateur. Pour plus d'informations sur la clé de Registre d'AutoLoadPackages, consultez chargement VSPackages.
VSPackage interface utilisateur
Un package de contrôle de code source est implémenté comme un VSPackage et n'utilise pas le interface utilisateur de Visual Studio. Chaque contrôle de code source VSPackage doit spécifier ses propres éléments d'interface utilisateur tels que des éléments de menu, des groupes de menus, des fenêtres Outil, des barres d'outils, et tout interface utilisateur requis pour définir des options spécifiques au contrôle de code source VSPackage. Ces éléments d'interface utilisateur peuvent être activés de manière statique ou dynamique. Les éléments statiques d'interface utilisateur sont définis dans un fichier de .vsct et sont affichés, que le VSPackage chargé ou pas. Les éléments DOM d'interface utilisateur peuvent être visibles en fonction d'un contexte particulier de la commande interface utilisateur, comme vsContextNoSolution, ou en tant que résultat d'un appel à la méthode d' QueryStatus . La visibilité des éléments dynamiques d'interface utilisateur est conforme à la stratégie pour un chargement différé de VSPackages.
contraintes d'interface utilisateur sur le contrôle de code source VSPackages
Étant donné que le contrôle de code source VSPackage ne peut pas être supprimé de l'IDE après qu'il a chargé, le VSPackage doit pouvoir l'état inactif. Lorsqu'un VSPackage reçoit une notification qu'elle n'est plus active, le VSPackage désactive son interface utilisateur et ignore toute interaction externe de l'IDE. L'implémentation du VSPackage de la méthode d' QueryStatus doit masquer des commandes lorsque le VSPackage n'est pas actif.
chaque contrôle de code source VSPackage doit implémenter l'interface d' IVsSccProvider . deux méthodes sur l'interface, SetActive et SetInactive, doivent être implémentées par le VSPackage.
Le contrôle de code source VSPackage a peut-être abonné à différent l'IDE les événements, qui sont implémentées par IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2, et ainsi de suite. En outre, le VSPackage peut avoir implémenté les interfaces de rappel Registre-activées, telles que IVsSolutionPersistence. Ils doivent tous être ignoré si inactifs.
La liste suivante affiche les interfaces affectées par l'état actif d'un contrôle de code source VSPackage :
Le projet de suivi documente les événements.
événements de solution.
interfaces de persistance de solution. Si inactifs, les packages ne doivent pas écrire dans les fichiers .sln et .suo.
extendeurs de propriété.
IVsQueryEditQuerySave2 requis et IVsSccManager2, et également aucune interface facultative associée au contrôle de code source, ne sont appelés lorsque le contrôle de code source VSPackage est inactif.
Au démarrage de Visual Studio IDE, Visual Studio définit le contexte de la commande interface utilisateur à l'ID de l'ID d'un VSPackage de contrôle de code source par défaut actuelle Cela entraîne l'affichage static interface utilisateur du contrôle de code source actif VSPackage dans l'IDE sans charger réellement le VSPackage. Visual Studio suspend pour que le VSPackage l'enregistrer à Visual Studio via IVsRegisterScciProvider avant qu'il fasse tous les appels au VSPackage.
Le tableau suivant décrit les détails spécifiques à propos de la façon dont Visual Studio IDE 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 le menu d'origine et les rapports de visibilité de barre d'outils au contrôle de code source package l'ID dans la section de VisibilityConstraints du fichier de .vsct. Cela permet à Visual Studio l'IDE pour définir l'état des éléments de menu correctement sans charger le VSPackage et appeler l'implémentation de la méthode d' QueryStatus . |
fenêtres Outil |
Le contrôle de code source VSPackage masque toutes les fenêtres Outil qu'il possède lorsqu'il est rendu inactif. |
Pages options de VSPackage-détail de contrôle de code source |
La clé de Registre HKLM \SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts lets a VSPackage définit les contextes dans lesquels il requiert ses pages options à afficher. Une entrée du Registre sous la clé doit être créée à l'aide de l'ID de service (SID) du service de contrôle de code source et de lui assigner une valeur DWORD de 1. Lorsqu'un événement d'interface utilisateur se produit dans un contexte le contrôle de code source VSPackage est enregistré avec, le VSPackage sera appelé s'il est actif. |