Nuevo sistema de plugins.

No digo que dentro de otro par de semanas el sistema de gestión de plugins me parezca una aberración y vuelva a implementarlo, sino que ya tenemos una referencia.

Como anticipaba hace unas semanas, el sistema de plugins no es el ideal por lo que estoy rediseñandolo. Antes de explicar cual va a ser el nuevo diseño voy a explicaros como funciona el actual y así resaltar sus problemas.

  • Los plugins se identifican por heredar de una de las subclases de plugin, AnonymousPlugin, UserPlugin o PremiumPlugin. A primera vista esto seria correcto porque son los tipos de acceso que dan nuestros servicios, pero la realidad es otra. Un plugin anononimo debe gestionar los slots de descarga que le permite el servicio que implementa, por el contrario un plugin premium no tiene restricción de slots pero necesita gestionar las cuentas. Los plugins de usuario pueden ser una mezcla de los anteriores.
  • Por otro lado un plugin anónimo le dice al gestor de servicios que servicio implementa y como comprobar los links de ese servicio por lo que puede haber varios plugins colisionando con el mismo servicio.
  • Finalmente cada plugin debe implementar los parsers que use, las subidas y las descargas haciendo su código largo y complejo, además de llenar el directorio de plugins de archivos que realmente no son plugins, sino clases auxiliares usadas por estos.

Todos los problemas anteriores tienen solución y ahora mismo ese sistema de plugins esta funcionando correctamente, pero es un buen momento para un nuevo diseño que no sufra de estos defectos y que simplifique bastante la creación de los plugins.

  • El directorio de plugins contendrá un subdirectorio por cada servicio que soporte Tucan y en este directorio estará cada plugin relacionado con el servicio, ademas de un archivo de configuración que contendrá las tareas que están implementadas. Así solo sera necesario un checklink por servicio y no por plugin, además de poder separar la funcionalidad en varios plugins.
  • Además AnonymousPlugin, UserPlugin y PremiumPlugin desaparecen y su funcionalidad la implementan Slots y Accounts, de esta forma un plugin para descargar de rapidshare de forma anónima tiene que heredar de Slots y Plugin (esto se hacia en AnonymousPlugin) quitando una capa de abstracción que realmente no hacia nada.

PD: Antes de ponerme con el nuevo sistema de plugins en un branch, implemente algunas mejoras en el gui. Os dejo unas capturas para que veáis lo nuevo de la versión 0.2.1.

Ahora podemos escoger de forma individual los links que empaquetamos.

seleccion individual de links

Nuevo orden de los botones del toolbox que ya funcionan a excepción de Add Uploads y ya se muestra el estado tanto en el TrayIcon como en barra de estado.

main_window

Un saludo, Crak.

No comments yet

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: