Hoy llega la siguiente versión de Station Playlist Studio, la 18.08. Llega con la gran novedad de que solo será compatible con las versiones de NVDA a partir de la 2018.2, debido a que se cambia el diálogo de preferencias por un panel en el nuevo de Opciones. Además, también se añaden varios cambios y correcciones de fallos menores, como un nuevo botón para configurar las transcripciones de listas de reproducción, donde podrás ordenar las columnas del archivo resultante
Como siempre, puedes actualizar este complemento utilizando el método automático para ello o descargarlo manualmente desde los enlaces de arriba. Recuerda: es necesario que tengas la versión 2018.2.
Últimas noticias
Actualización de complementos: GoldenCursor 2.1, SystrayList 2.4, UnicodeBrailleInput 2.9 y Clipspeak estable
Ayer se actualizaron tres complementos del sitio web oficial para añadir compatibilidad con WX Python 4. Son Golden Cursor (a la 3.1), Systray List (2.4) y Unicode Braille Input (3.9). Se puede actualizar a estas nuevas versiones sin miedo ya utilicemos el canal estable o el de alguna de las versiones de desarrollo, pues la compatibilidad con WX versión 3 se ha mantenido. Es importante actualizar a estas nuevas versiones ya que, probablemente, NVDA 2018.3 incorpore WX 4, con lo que versiones anteriores de estos complementos podrían no funcionar correctamente con la próxima actualización del lector.
Por otro lado, el autor de Clipspeak ha declarado la versión 1.0 de su complemento como estable, lo que significa que tiene un menor grado de errores y ha sido probada sin fallos significativos durante un tiempo. También ha aprovechado para corregir un error en su nombre de la documentación.
Si te has quedado con dudas, recuerda que estamos activos a través de una gran variedad de canales para que puedas planteárnoslas. En la parte inferior de esta página tienes nuestros perfiles en redes sociales y algunos enlaces a lugares de discusión relevantes en la comunidad, y en el menú principal el enlace a nuestro formulario de contacto por correo electrónico.
Si te gusta nuestro trabajo, plantéate hacer una donación.
Feliz domingo.
Tutorial: usar el módulo guiHelper para mejorar la apariencia visual de nuestras interfaces
A la hora de programar un complemento que tiene algún tipo de interfaz gráfica, o hacer modificaciones a la propia interfaz de NVDA, todos los desarrolladores ciegos nos hacemos la misma pregunta tarde o temprano: ¿cómo se ve en pantalla esto que estoy programando? Podemos probar distintas combinaciones de constantes, posiciones y tamaños para los controles, pero al no poder verlos, probablemente el resultado no sea el que esperamos. En la entrada de hoy vamos a hablar del módulo guiHelper, disponible desde la versión 2016.4 de NVDA. La misión de este módulo es abstraernos un poco de los detalles más visuales del diseño de nuestra interfaz, de tal forma que sólo debamos preocuparnos de añadir controles y funcionalidad. El módulo no hace magia, pero nuestras interfaces quedarán probablemente un poquito mejor que antes. Si quieres conocer este módulo un poco más, sigue leyendo. ¡Allá vamos!
Nota: en este artículo se asume que el lector tiene conocimientos sobre la programación de complementos con interfaz gráfica.
Importar el módulo
El módulo guiHelper se encuentra en el paquete gui. Si nuestro complemento tiene interfaz gráfica, en algún momento seguramente habremos importado los módulos gui y wx, por lo que sólo haría falta escribir esto:
from gui import guiHelper
Una vez hecho esto, ya podremos acceder a sus constantes, funciones y clases.
Constantes de guiHelper
Estas constantes vienen incluidas directamente en el módulo.
- BORDER_FOR_DIALOGS: es el borde que se encuentra alrededor de cada control dentro de un diálogo.
- SPACE_BETWEEN_VERTICAL_DIALOG_ITEMS: cuando los elementos de un diálogo se disponen de manera vertical, esta constante se puede emplear para indicar cuánto espacio hay entre cada elemento.
- SPACE_BETWEEN_BUTTONS_HORIZONTAL: especifica el espacio que hay entre botones dispuestos de manera horizontal.
- SPACE_BETWEEN_BUTTONS_VERTICAL: igual que en el caso anterior, pero se aplica cuando los botones están dispuestos verticalmente unos sobre otros.
- SPACE_BETWEEN_ASSOCIATED_CONTROL_HORIZONTAL: es el espacio que separa a dos controles relacionados dispuestos en horizontal.
- SPACE_BETWEEN_ASSOCIATED_CONTROL_VERTICAL: lo mismo que en el caso anterior, pero en disposiciones verticales.
Funciones de guiHelper
A día de hoy, guiHelper sólo dispone de una función a nivel de módulo: associateElements. Esta función introduce dos controles en un objeto Sizer de wx, situándolos en horizontal o vertical y separándolos adecuadamente según su tipo. Su cabecera es la siguiente:
def associateElements( firstElement, secondElement)
Los controles deben pasarse en el orden en que queremos que se asocien. Las posibles asociaciones son:
- wx.StaticText y wx.Choice, wx.TextCtrl o wx.Button: asocia una etiqueta con un cuadro combinado, un cuadro de edición o un botón, en disposición horizontal.
- wx.StaticText y wx.ListCtrl o wx.ListBox o wx.TreeCtrl: asocia una etiqueta con una presentación en lista, un cuadro de lista o una vista en árbol, en disposición vertical.
- wx.Button y wx.CheckBox: asocia un botón y una casilla de verificación, disposición horizontal.
- wx.TextCtrl y wx.Button: asocia un cuadro de texto y un botón en posición horizontal.
En todos los casos, los controles deben ser objetos ya instanciados. La función devuelve el objeto Sizer que los contiene, listo para añadirlo a un diálogo u otro Sizer.
Clases de guiHelper
El módulo guiHelper dispone de cuatro clases que nos ayudan a construir nuestra interfaz. Aunque vamos a verlas todas, la que más se usa es BoxSizerHelper. Todas ellas tienen el atributo sizer, empleado al construir el resto de la interfaz.
La clase ButtonHelper
Esta clase sirve para añadir el espacio adecuado entre botones, tanto en horizontal como en vertical. Al instanciar objetos a partir de ella, se debe especificar la orientación del Sizer que va a generar, ya sea wx.VERTICAL o wx.HORIZONTAL. Por ejemplo:
bh=guiHelper.ButtonHelper(wx.VERTICAL)
Una vez construido el objeto, podemos agregar botones llamando al método addButton:
bh.addButton(mydialog, label=_("Test button 1"))
El método addButton construye un nuevo botón con los parámetros que le pasemos, o también puede añadir un botón previamente creado. Es imprescindible indicar en el primer caso el diálogo o ventana padre que contendrá al botón, y una etiqueta por razones de accesibilidad con el parámetro label. Al acabar, se devuelve el botón creado para que podamos hacer cosas con él, como asociarle acciones.
La clase LabeledControlHelper
Esta clase permite crear controles etiquetados y asociar etiqueta y control entre sí en un Sizer. Se apoya en la función associateElements que vimos más arriba. La cabecera de su constructor es:
def __init__(self, parent, labelText, wxCtrlClass, **kwargs)
Por lo tanto, para construir un objeto de tipo LabeledControlHelper necesitamos pasar como parámetros el diálogo o ventana padre, el texto de la etiqueta que acompañará al control, la clase del control (cuidado, aquí no valen controles previamente creados), y cualquier argumento que necesite el control para construirse. Veámoslo de forma más clara con un ejemplo:
lch=guiHelper.LabeledControlHelper(mydialog, "Selecciona una fruta", wx.Choice, choices=['pera', 'manzana', 'fresa'])
En el ejemplo anterior hemos pasado como clase wx.Choice para crear un cuadro combinado, y como parámetros adicionales las opciones que presentará.
La clase LabeledControlHelper dispone de dos atributos para que podamos trabajar cómodamente: sizer, igual que en el resto de clases, y control, que hace referencia al control de wx que hemos creado.
La clase PathSelectionHelper
Esta clase nos permite crear de una forma rápida, sencilla y abstrayéndonos de todos los detalles, un cuadro de edición y un botón «Examinar…» como los que aparecen en muchos programas, con el objetivo de que podamos fabricar un selector de rutas. En el constructor le pasamos el padre, como siempre, el texto del botón Examinar, y el título del diálogo que se desplegará para seleccionar una ruta cuando pulsemos dicho botón. Por ejemplo:
psh=guiHelper.PathSelectionHelper(mydialog, "Examinar...", "Selecciona la carpeta que contiene los documentos")
Como en los casos anteriores, tenemos la propiedad sizer, pero además aquí nos acompaña otra: pathControl, que contiene una referencia al cuadro de texto donde está escrita la ruta.
En caso de que sea necesario, se podría crear una clase que herede de esta y sobreescribir o extender los métodos getDefaultBrowseForDirectoryPath y onBrowseForDirectory. El primero devuelve la ruta por defecto que muestra el diálogo de seleccionar carpeta, y el segundo muestra este diálogo y almacena el resultado en el cuadro de edición.
La clase BoxSizerHelper
Llegamos a la clase más importante de este módulo, la más usada, y la que emplea la funcionalidad expuesta en casi todas las otras. BoxSizerHelper permite configurar la disposición interna de un objeto Sizer. La cabecera de su constructor es:
def __init__(self, parent, orientation=None, sizer=None)
Como siempre, el primer argumento que espera recibir es la ventana padre. Después, podemos pasar una orientación (wx.VERTICAL o wx.HORIZONTAL), en cuyo caso se creará internamente un objeto Sizer, o un Sizer ya creado, a ser posible vacío. Si pasamos ambos parámetros, se produce un error.
Al igual que sucede en los casos anteriores, tenemos un atributo sizer. Esta clase, además, presenta los siguientes métodos:
- addItem(self, item, **keywordArgs): añade un control wx ya creado y lo sitúa adecuadamente. El último argumento es opcional y sólo se usa en raras ocasiones. El método devuelve el elemento que se pasa como parámetro, para que podamos asociarle acciones y hacer otras cosas con él.
- addLabeledControl(self, labelText, wxCtrlClass, **kwargs): añade un control etiquetado. El primer parámetro que recibe es el texto con la etiqueta del control, seguido de la clase del control y los parámetros adicionales que se quieran pasar. Fíjate en el ejemplo anterior del cuadro combinado. Este método devuelve el control que se acaba de agregar.
- addDialogDismissButtons(self, buttons): agrega y alinea los botones Aceptar, Cancelar y Aplicar de los diálogos estándar. Este método debería llamarse cuando ya se han añadido todos los demás controles. Buttons puede ser un objeto wx.Button, un objeto wx.Sizer o un objeto guiHelper.ButtonHelper. Devuelve el mismo objeto que se le pasa como parámetro.
Aplicaciones prácticas
Al igual que en una entrada anterior, vamos a poner como ejemplo el complemento Enhanced Aria (aunque esta vez no vendrá solo), para demostrar lo fácil que es adaptar nuestros complementos para que se apoyen en guiHelper. En la versión 1.3, para agregar la primera casilla de verificación del diálogo de ajustes de aria mejorada, se hacía esto:
self.bannerenabled=wx.CheckBox(self, wx.NewId(), label=(u"Report banners")) # Como self es una clase que hereda de wx.Dialog, se pasa como padre
self.bannerenabled.SetValue(config.conf['aria']['reportBanner']) # Se establece el valor de la casilla
sizer.Add(self.bannerenabled,border=10,flag=wx.BOTTOM) # se añade la casilla sizer
Como se puede comprobar, hay que crear la casilla con su etiqueta correspondiente, asignarle el valor adecuado y añadirla al objeto que va a contenerla, con indicadores de borde y alineación. Sin embargo, en la versión 2.0 basta con hacer esto:
def createSettings(obj, sizer):
helper=guiHelper.BoxSizerHelper(obj, sizer=sizer)
obj.bannerenabled=helper.addItem(wx.CheckBox(obj, wx.NewId(), label=("Report banners")))
obj.bannerenabled.SetValue(config.conf['aria']['reportBanner'])
Como se puede ver, creamos un BoxSizerHelper pasando como parámetro el Sizer que nos dan en el método makeSettings, y que en el caso particular de esta implementación se pasa a createSettings. A continuación, agregamos una nueva casilla de verificación llamando a addItem, y luego establecemos su valor.
Veamos el diálogo de Windows 10 App Essentials, que también se apoya en este módulo. Lo podemos encontrar en el archivo w10config.py. Se trata de un diálogo completo, una clase que hereda de wx.Dialog. Por lo tanto, construirlo implica más esfuerzo, al no tener a nuestra disposición la clase SettingsDialog de NVDA o la clase SettingsPanel. En lugar del método makeSettings, que ya nos da un Sizer, las operaciones de construcción se hacen en el constructor del diálogo.
En primer lugar, se crea un objeto de tipo BoxSizer:
mainSizer = wx.BoxSizer(wx.VERTICAL)
Y a continuación, se crea un BoxSizerHelper con un Sizer nuevo, que será hijo del que se acaba de crear:
w10Helper = gui.guiHelper.BoxSizerHelper(self, orientation=wx.VERTICAL)
Teniendo el BoxSizerHelper, ya se pueden añadir controles. Vamos a ver dos de ellos, la casilla de verificación y el cuadro combinado.
self.autoUpdateCheckbox=w10Helper.addItem(wx.CheckBox(self,label=_("Automatically check for add-on &updates"))) # Se crea la casilla
self.autoUpdateCheckbox.SetValue(config.conf["wintenApps"]["autoUpdateCheck"]) # Se establece su valor
labelText = _("&Add-on update channel:") # Etiqueta del cuadro combinado
self.channels=w10Helper.addLabeledControl(labelText, wx.Choice, choices=["development", "stable"]) # Cuadro combinado
Ya para acabar, se añaden los botones Aceptar y cancelar, y se hace de una forma muy particular, ya predefinida en wx:
w10Helper.addDialogDismissButtons(self.CreateButtonSizer(wx.OK | wx.CANCEL))
En este caso no existe acceso directo a los botones, como sí pasa con el resto de los controles, así que las asociaciones se hacen de esta manera:
self.Bind(wx.EVT_BUTTON, self.onOk, id=wx.ID_OK)
self.Bind(wx.EVT_BUTTON, self.onCancel, id=wx.ID_CANCEL)
El BoxSizerHelper ya está completo, hay que añadirlo al Sizer principal. Una vez más, se pide ayuda a guiHelper, y al propio motor wx para centrarlo y posicionarlo:
mainSizer.Add(w10Helper.sizer, border=gui.guiHelper.BORDER_FOR_DIALOGS, flag=wx.ALL)
mainSizer.Fit(self)
self.Center(wx.BOTH | (wx.CENTER_ON_SCREEN if hasattr(wx, "CENTER_ON_SCREEN") else 2))
Conclusión
Es importante que nuestros complementos e interfaces gráficas en general sean visualmente usables. Aunque NVDA es un lector de pantalla empleado mayoritariamente por personas con discapacidad visual, estas personas suelen estar acompañadas por otras que ven perfectamente, especialmente cuando se introducen en el mundo de la informática. Por tanto, debemos tener en cuenta a todos los posibles usuarios.
En esta entrada hemos conocido el módulo guiHelper, que nos ayuda precisamente en esta tarea. GuiHelper no hace magia, no tiene ningún tipo de «inteligencia artificial» que coloque nuestros controles exactamente como deberían estar para que nuestra interfaz sea atractiva. Sin embargo, nos ayuda un poco a conseguirlo, simplifica nuestro código y por lo tanto facilita el mantenimiento.
Si tus complementos no se apoyan todavía en este módulo, no esperes más para adaptarlos. Tus usuarios lo agradecerán, ¡y tú también!
Cambios en el proceso de desarrollo de NVDA
Esta mañana, NV Access ha anunciado en una publicación que van a producirse cambios en la metodología de desarrollo de NVDA que afectarán tanto a los desarrolladores como a aquellos usuarios que prueban las versiones de desarrollo. Estos cambios se llevan a cabo para aprovechar mejor la infraestructura de Github, y porque existen cada vez más pruebas unitarias que garantizan que el código siempre tendrá cierta calidad. El principal cambio que se llevará pronto a cabo es la descontinuación de la rama next, así como sus versiones de desarrollo. La rama next ya no es necesaria porque las solicitudes de cambios (pull requests) pasan una serie de controles automatizados antes de que los desarrolladores decidan si las mezclan o no. Esto, junto al creciente número de pruebas unitarias automatizadas, hace que ya no sea necesario probar de forma tan exhaustiva el código. Aquellos usuarios que tengan instalada la versión de desarrollo next de NVDA comenzarán a recibir actualizaciones de la versión de desarrollo master. Los que utilicen las versiones de desarrollo master, por su parte, seguirán recibiendo actualizaciones por este canal de desarrollo. Pero cuidado, porque el código que antes llegaba a next ahora se recibe en master, lo que significa que estas versiones dejarán de ser tan estables como hasta ahora.
Pero entonces, ¿qué ocurre con aquellos que quieran ir por delante de las versiones rc y oficiales, pero sin arriesgarse a tener un lector de pantalla lleno de fallos?
Aproximadamente siete semanas antes de la liberación estable de NVDA, comenzarán a ponerse a disposición del público versiones beta. Habrá una rama beta en el repositorio de NVDA. El código de estas versiones de desarrollo será tan estable como el de las versiones master actuales. Para acabar, los traductores y los usuarios de versiones estables no se verán afectados por ninguno de estos cambios.
Hay más cambios específicos para desarrolladores, relacionados con la gestión de solicitudes de cambios. Ya se encuentran disponibles en nuestra traducción del artículo El proceso de liberación de versiones, disponible en inglés en la wiki de NVDA en GitHub.
Por otro lado, NV Access le ha dado un lavado de cara a su sitio web, renovándolo por completo. Ahora, entre otras cosas, ya no es obligatorio introducir una dirección de correo electrónico para descargar NVDA desde allí, los textos de la página de inicio han cambiado para mostrar la filosofía de la organización, y hay nuevas secciones con enlaces para que tengamos todos sus recursos más a mano. ¡Bien hecho!
Esto es todo por el momento. Pronto volveremos con más artículos para desarrolladores, complementos no oficiales descubiertos y detalles sobre nuestro encuentro anual.
¡Hasta la próxima!
Actualización de complementos: Windows10AppEssentials 18.07.1A
El complemento Windows 10 App Essentials, que añade mejoras a nuestra experiencia con aplicaciones nativas de Windows10, se actualiza hoy a la versión 18.07.1A. Esta A tras el número de versión significa que las modificaciones son muy pequeñas, lo cual concuerda en este caso con el registro de cambios: Lo único nuevo es que ahora se omite el texto «encabezado 1» después del resultado en la calculadora. No era un error ya que el sistema informa a NVDA de un encabezado 1 después del resultado, pero igualmente se ha cambiado el comportamiento por comodidad y costumbre.
Como siempre ocurre con los complementos que tienen un actualizador automático, hay dos formas de descargar las nuevas versiones: podemos optar por el mencionado actualizador, o bien podemos pulsar en el enlace de más arriba, que nos llevará a la ficha del complemento en esta web desde la que podremos, además de leer toda la información sobre él, obtener el paquete nvda-addon que nos permitirá instalarlo mediante el método usual.
Actualización de complementos: Windows10AppEssentials 18.07.1
En el mundo NVDA comenzamos el mes de julio con otra actualización del complemento Windows 10 App Essentials, a la versión 18.07.1. Viene con varios cambios significativos: por un lado, las alertas marcadas como tal mediante aria se anunciarán cuando cambien en Edge y otras aplicaciones que utilicen su motor, y por otro NVDA será menos detallado al explorar emojys mediante el Panel de Emojys en la compilación 17704 y posteriores.
Como siempre, hacerte con esta nueva versión es tan fácil como esperar a que el propio complemento te pregunte. También puedes forzar la verificación de actualizaciones desde el diálogo de configuración del complemento o descargarla manualmente de la forma habitual.
Feliz semana.
Actualización de complementos: GoldWave 18.07, Resource Monitor 18.07 y algunos más
En las últimas horas, Joseph Lee y Noelia Ruiz han actualizado varios de sus complementos. Veamos cuáles son en detalle:
- Resource Monitor 18.07: elimina el soporte para Windows Vista, Server 2003 y 2008.
- GoldWave 18.07: soluciona un fallo que hacía que se verbalizaran ceros en el tiempo restante de una pista cuando en realidad no los había.
- Clip Contents Designer 8.1
- Emoticons 7.1
- Emule 3.12
- Place Markers 10.1
- Read Feeds 4.4
- Report Symbols 4.1
Todos estos complementos llevan traducciones actualizadas. Como siempre, se recomienda instalar las últimas versiones.
Por otro lado, los complementos Team Viewer y Console timer dejan de ser estables y vuelven a la categoría de desarrollo. Esto es debido a que sus autores no disponen del tiempo o los recursos necesarios para mantenerlos, o que parte de su funcionalidad se ha integrado en NVDA. De momento siguen funcionando, pero en el futuro podrían dejar de hacerlo si el núcleo de NVDA cambia.
En nuestra web hemos reflejado este cambio retirándolos de la categoría «Complementos estables», tal y como se ha hecho en la web de la comunidad internacional.
Actualización de complementos: NVDAStore 1.0.3
Llevamos ya un tiempo sin hablar de complementos no oficiales, y lo cierto es que aún nos quedan unos cuantos por documentar para agrupar todos aquellos de los que tenemos conocimiento. Vamos a empezar una nueva tanda de éstos hablándoos de la actualización más reciente de NVDA Store, que salió hace unos meses. En esta nueva versión, la 1.0.3, se finaliza la traducción al francés y, al mismo tiempo, se soluciona un error que podía imposibilitar una salida completa de NVDA.
Esta es una actualización que arregla un fallo que podría afectar al conjunto de la instalación de NVDA; de manera que es recomendable actualizar si no se ha hecho aún. Podemos hacerlo a través del enlace arriba o mediante el actualizador automático que el complemento trae consigo. Si aún no has instalado NVDA Store, un complemento para instalar y actualizar ciertos complementos listados en la web del autor, y te interesa hacerlo, deberás optar por la primera opción. Recuerda, pese a todo, que éste es un complemento no revisado por experimentados miembros de la comunidad como sí ocurre en el caso de los disponibles en la web oficial de complementos, con lo que puede contener errores y no hay garantías suficientes de que funcione como se espera en todos los casos.
Finalmente, si conoces algún complemento no oficial que se ha actualizado y no hemos avisado, no dudes en colaborar con nosotros; solos no somos capaces de vigilarlos a todos. Puedes comunicarte con esta web a través de nuestro formulario de contacto o [email protected] si optas por el correo electrónico, o mediante nuestro twitter @nvda_es, que tiene los mensajes directos abiertos para cualquier consulta, si eliges utilizar esta plataforma. Al pie de todas las páginas del sitio también tienes un menú de enlaces sociales donde se encuentran los lugares más relevantes de interacción entre miembros de la comunidad hispanohablante. Te agradeceremos cualquier información que nos hagas llegar.
Actualización de complemento: VLC Media Player 2.4
El complemento que mejora la accesibilidad con el reproductor multimedia VLC Media Player se actualiza a la versión 2.4. En esta actualización se siguen solucionando fallos y se mejora la experiencia con VLC Media Player 3.x. Además, su autor ha liberado también la versión 2.5-dev, que permite explorar los cuadros de edición en la interfaz del reproductor.
Más información y descarga del complemento para VLC
Como siempre, te recordamos que mantener tus complementos actualizados es muy importante, ya que esto garantiza una experiencia óptima con NVDA y te permite disponer de las últimas mejoras de calidad, estabilidad y seguridad.
¡Feliz viernes!
Actualización de complementos: StationPlaylistStudio 18.07
Si ayer os hablábamos de la actualización a la versión 18.07 de windows 10 App Essentials, hoy hace lo propio Station Playlist Studio, el complemento que añade multitud de funciones de accesibilidad a las herramientas de la suite Station Playlist.
Con esta versión llegan algunas características nuevas, como la posibilidad de obtener transcripción de la lista de reproducción de la hora en curso o la de guardarla (o copiarla al portapapeles en el caso de los formatos texto y tabla Markdown) en vez de sólo visualizarla, y, en SPLCreator y la Herramienta de Pistas, los atajos NVDA+número dos veces para ver en una ventana navegable la información de la columna y ctrl+alt+inicio/fin para mover el navegador de columnas a la primera o última, respectivamente, de la pista con el foco. También se han corregido varios errores y se ha añadido un panel experimental multicategoríade opciones del complemento, que se puede activar desde el actual diálogo de opciones (apartado avanzado) y que no permite configurar la misma cantidad de parámetros que en éste.
Para tener en nuestro poder esta nueva actualización basta con esperar al diálogo que nos informará al respecto (que podemos abrir manualmente desde las preferencias de esta extensión, pulsando el botón «Verificar actualizaciones»); y también tenemos la posibilidad de descargar el paquete desde los enlaces disponibles en la página que te dejamos en la parte superior de este artículo, donde además podrás obtener toda la información disponible acerca de este complemento.