Interfaz de usuario personalizada (VSPackage de control de código fuente)
Un VSPackage declara sus elementos de menú y sus estados predeterminados a través del archivo de tabla de comandos de Visual Studio (.vsct). El entorno de desarrollo integrado (IDE) de Visual Studio muestra los elementos de menú en sus estados predeterminados hasta que se carga VSPackage. Posteriormente, QueryStatus se llama al método para habilitar o deshabilitar elementos de menú.
Un VSPackage puede establecer una clave del Registro para que VSPackage se pueda cargar automáticamente en función de un contexto de interfaz de usuario (UI) de comandos, aunque normalmente un control de código fuente VSPackage debe cargarse a petición en lugar de simplemente cambiar a un contexto de interfaz de usuario determinado. Para obtener más información sobre la clave del Registro AutoLoadPackages , consulte Administración de VSPackages.
INTERFAZ de usuario de VSPackage
Un paquete de control de código fuente se implementa como VSPackage y no usa ninguna interfaz de usuario de Visual Studio. Cada control de código fuente VSPackage debe especificar sus propios elementos de interfaz de usuario, como elementos de menú, grupos de menús, ventanas de herramientas, barras de herramientas y cualquier interfaz de usuario necesaria para establecer opciones específicas del control de código fuente VSPackage. Estos elementos de interfaz de usuario se pueden habilitar de forma estática o dinámica. Los elementos estáticos de la interfaz de usuario se definen en un archivo .vsct y se muestran si el VSPackage se carga o no. Los elementos dinámicos de la interfaz de usuario pueden ser visibles en función de un contexto de interfaz de usuario de comando determinado, como vsContextNoSolution, o como resultado de una llamada al QueryStatus método . La visibilidad de los elementos dinámicos de la interfaz de usuario cumple con la estrategia para la carga retrasada de VSPackages.
Restricciones de interfaz de usuario en VSPackages de control de código fuente
Dado que el VSPackage de control de código fuente no se puede quitar del IDE después de cargarlo, VSPackage debe poder especificar un estado inactivo. Cuando un VSPackage recibe una notificación de que ya no está activo, VSPackage deshabilita su interfaz de usuario y omite cualquier interacción del IDE externo. La implementación de VSPackage del QueryStatus método debe ocultar comandos cuando VSPackage no está activo.
Cada control de código fuente VSPackage debe implementar la IVsSccProvider
interfaz . El VSPackage debe implementar dos métodos en la interfaz SetActive y SetInactive.
El control de código fuente VSPackage puede haberse suscrito a varios eventos ide, que se implementan mediante IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2, etc. Además, VSPackage puede haber implementado interfaces de devolución de llamada habilitadas para el Registro, como IVsSolutionPersistence. Todas estas interfaces deben omitirse cuando están inactivas.
En la lista siguiente se muestran las interfaces afectadas por el estado activo de un VSPackage de control de código fuente:
Realice un seguimiento de los eventos de documentos del proyecto.
Eventos de la solución.
Interfaces de persistencia de soluciones. Cuando está inactivo, los paquetes no deben escribir en archivos .sln y .suo .
Extensores de propiedad.
No se llama a las interfaces necesarias IVsQueryEditQuerySave2 y IVsSccManager2, y también a las interfaces opcionales asociadas con el control de código fuente, cuando el VSPackage del control de código fuente está inactivo.
Cuando se inicia el IDE de Visual Studio, Visual Studio establece el contexto de la interfaz de usuario del comando en el identificador del control de código fuente predeterminado actual VSPackage ID. Esto hace que la interfaz de usuario estática del control de código fuente activo VSPackage aparezca en el IDE sin cargar realmente VSPackage. Visual Studio se detiene para que VSPackage se registre con Visual Studio a través de IVsRegisterScciProvider antes de realizar las llamadas a VSPackage.
En la tabla siguiente se describen detalles específicos sobre cómo el IDE de Visual Studio oculta distintos elementos de interfaz de usuario.
Elemento de interfaz de usuario | Descripción |
---|---|
Menús y barras de herramientas | El paquete de control de código fuente debe establecer los estados de visibilidad del menú inicial y la barra de herramientas en el identificador del paquete de control de código fuente en la sección VisibilityConstraints del archivo .vsct . Esto permite al IDE de Visual Studio establecer el estado de los elementos de menú adecuadamente sin cargar VSPackage y llamar a una implementación del QueryStatus método . |
Ventanas de herramientas | El control de código fuente VSPackage oculta las ventanas de herramientas que posee cuando se hace inactiva. |
Páginas de opciones específicas de VSPackage del control de código fuente | La clave del Registro HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts permite que un VSPackage establezca los contextos en los que requiere que se muestren sus páginas de opciones. Una entrada del Registro bajo esta clave tendría que crearse mediante el identificador de servicio (SID) del servicio de control de código fuente y asignarle un valor DWORD de 1. Cada vez que se produce un evento de interfaz de usuario en un contexto con el que se registra el VSPackage de control de código fuente, se llamará a VSPackage si está activo. |