Opciones y páginas de opciones
Al hacer clic en Opciones en el menú Herramientas, se abre el cuadro de diálogo Opciones. Las opciones de este cuadro de diálogo se conocen colectivamente como páginas de opciones. El control de árbol del panel de navegación incluye categorías de opciones y cada categoría tiene páginas de opciones. Al seleccionar una página, sus opciones aparecen en el panel derecho. Estas páginas permiten cambiar los valores de las opciones que determinan el estado de un VSPackage.
Compatibilidad con páginas de opciones
La Package clase proporciona compatibilidad para crear páginas y categorías de opciones. La DialogPage clase implementa una página de opciones.
La implementación predeterminada de DialogPage ofrece sus propiedades públicas a un usuario en una cuadrícula genérica de propiedades. Puede personalizar este comportamiento invalidando varios métodos en la página para crear una página de opciones personalizada que tenga su propia interfaz de usuario (UI). Para obtener más información, vea Crear una página de opciones.
La DialogPage clase implementa , que proporciona persistencia para las páginas IProfileManagerde opciones y también para la configuración del usuario. Las implementaciones predeterminadas de los métodos y SaveSettingsToStorage conservan los LoadSettingsFromStorage cambios de propiedad en una sección de usuario del Registro si la propiedad se puede convertir a y desde una cadena.
Ruta de acceso del Registro de la página Opciones
De forma predeterminada, la ruta de acceso del Registro de las propiedades administradas por una página de opciones se determina mediante la combinación UserRegistryRootde , la palabra DialogPage y el nombre de tipo de la clase de página de opciones. Por ejemplo, una clase de página de opciones podría definirse de la siguiente manera.
UserRegistryRoot Si es HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp, los pares de nombre de propiedad y valor son subclaves de HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral.
La ruta de acceso del Registro de la propia página de opciones viene determinada mediante la combinación ApplicationRegistryRootde , la palabra, ToolsOptionsPages y la categoría y el nombre de la página de opciones. Por ejemplo, si la página Opciones personalizadas tiene la categoría Mis páginas de opciones y ApplicationRegistryRoot es HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, la página de opciones tiene la clave del Registro, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom.
Atributos y diseño de página Herramientas/Opciones
El ProvideOptionPageAttribute atributo determina la agrupación de páginas de opciones personalizadas en categorías del árbol de navegación del cuadro de diálogo Opciones . El ProvideOptionPageAttribute atributo asocia una página de opciones a VSPackage que proporciona la interfaz . Observe el siguiente fragmento de código :
[ProvideOptionPage(typeof(OptionsPageGeneral),"My Option Pages", "General", 101, 106, true)]
[ProvideOptionPage(typeof(OptionsPageCustom), "My Option Pages", "Custom", 101, 107, true)]
[Guid("B0002DC2-56EE-4931-93F7-70D6E9863940")]
public class MyPackage : Package
Esto declara que MyPackage proporciona dos páginas de opciones, OptionsPageGeneral y OptionsPageCustom. En el cuadro de diálogo Opciones , ambas páginas de opciones aparecen en la categoría Mis páginas de opciones como General y Personalizado, respectivamente.
Atributos de opción y diseño
La interfaz de usuario (UI) que proporciona la página determina la apariencia de las opciones en una página de opciones personalizadas. Los atributos siguientes determinan el diseño, el etiquetado y la descripción de las opciones de una página de opciones genéricas:
CategoryAttribute determina la categoría de la opción.
DisplayNameAttribute determina el nombre para mostrar de la opción.
DescriptionAttribute determina la descripción de la opción.
Nota:
Atributos equivalentes, SRCategory, LocDisplayName y SRDescription, usan recursos de cadena para la localización y se definen en el ejemplo de proyecto administrado.
Observe el siguiente fragmento de código :
La opción OptionInteger aparece en la página opciones como Opción de entero en la categoría Mis opciones . Si la opción está seleccionada, la descripción, Mi entero, aparece en el cuadro descripción.
Obtener acceso a páginas de opciones desde otro VSPackage
Un VSPackage que hospeda y administra una página de opciones se puede acceder mediante programación desde otro VSPackage mediante el modelo de automatización. Por ejemplo, en el código siguiente, un VSPackage se registra como hospedaje de una página de opciones.
[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package
El fragmento de código siguiente obtiene el valor de OptionInteger de MyOptionPage:
DTE dte = (DTE)GetService(typeof(DTE));
EnvDTE.Properties props = dte.get_Properties("My Category", "My Grid Page");
int n = (int)props.Item("OptionInteger").Value;
Cuando el ProvideOptionPageAttribute atributo registra una página de opciones, la página se registra en la clave AutomationProperties si el SupportsAutomation
argumento del atributo es true
. Automation examina esta entrada del Registro para buscar el VSPackage asociado y, a continuación, la automatización accede a la propiedad a través de la página de opciones hospedadas, en este caso, Mi página de cuadrícula.
La ruta de acceso del Registro de la propiedad automation se determina mediante la combinación ApplicationRegistryRootde , la palabra, AutomationProperties y la categoría y el nombre de la página de opciones. Por ejemplo, si la página de opciones tiene la categoría Mi categoría, el nombre de mi página de cuadrícula y , ApplicationRegistryRootHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp, la propiedad automation tiene la clave del Registro, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page.
Nota:
El nombre canónico My Category.My Grid Page es el valor de la subclave Name de esta clave.