DescripcionPyraguaUI – Pyragua

Descripción General

Pyragua al ser una aplicación gráfica para todo tipo de usuarios, debe poseer una interfaz flexible, y extensible, acorde a las necesidades de extensibilidad que requieren los plugins de Pyragua. El objetivo de este documento es describir las cuestiones de diseño relacionadas con la parte gráfica (UI) de Pyragua.

El Toolkit

Pyragua ha elegido como Toolkit gráfico WxPython?. Este toolkit ha demostrado ser muy potente, y capaz de adaptarse a las necesidades que requiere el editor. Otras características que nos llevaron a su elección, son el hecho de que luce nativo en cada plataforma, y el módulo de AUIs, que con relativa facilidad nos permite realizar interfaces gráficas de una flexibilidad enorme, y de una apariencia visual muy agradable.

Sin embargo, somos concientes de algunas de las limitantes que tiene el widget, relacionadas con la facilidad de codificación que en algunos momentos se aleja de Python y se acerca un poco más a C++, y también el desarrollo de interfaces gráficas por lo general conlleva una gran cantidad de código específico y repetitivo.

Con estas características y debilidades en mente, se espera diseñar la interfaz de Pyragua, de forma que aproveche lo mejor de wxPython y de alguna forma supere los inconvenientes antes mencionados.

Necesidades de la Interfaz

Ideas para la implementación

GTK+ posee una libreria para definir barras de menús y de herramientas haciendo uso de XML. Esta libreria hace automáticamente la creación de estos elementos gráficos, y permite también por ejemplo mezclar varias definiciones para generar una que posea los elementos de ambos. Se puede implementar una libreria similar a esta para wxPython, que permite que los plugins definan de una forma simple como modifican la barra de herramientas y la de menús.

* Insertar ejemplos y enlace a la libreria de GTK+ *

Se debe manejar de manera centralizada los recursos gráficos, utilizando una clase administradora como intermediaria, por ejemplo AdministradorPyraguaUI. Este objeto expone la interfaz a los demás, y debería ser instanciado solo una vez por el objeto principal del editor.

La API

La api debe permitir control sobre el menú, y una forma de insertar barras de herramientas. La api debe incluir formas de control sobre la ventana principal de pyragua. La api debe permitir insertar ventanas dentro del área central de trabajo. La api debe permitir el uso de la barra de estado.

Ventajas/Limitaciones?

La implementación propuesta de PyraguaUI trae consigo una limitante, y es que al esconder tras una interfaz (API) a wxPython, no se tendrá acceso a toda la funcionalidad natural de wx. Dado el caso de que se necesite más funcionalidad, se hace necesario extender la API para implementarla. A cambio de esto, se abre la posibilidad de limitar a los plugins el acceso a la interfaz.