[UREMIX] Uremix-App-Developer-Helper (UADH)

2 comments

En el Hackmeeting se tuvo la ponencia del Tucan de Ariel aqui entre nosotros el papa Pinguino :D, la verdad que este loco me sorprendio hace un tiempo atras a principio de año me acuerdo que hable con el algo referente a lo que presento :| pero ese dia me quede asi al ver que lo logro lo que salio como una idea pequeña el la llevo a lo maximo.

UADH

Uremix-App-Developer-Helper (UADH) es una API hecha por el Grupo Uremix, esta orientada a ser el soporte con clases y funciones de ayuda para el desarrollo de aplicaciones dentro del Grupo.
Actualmente tiene procedimientos para abstraer el desarrollo de GUIs, un administrador de configuraciones y un motor de plugins; a futuro traerá también un manejador de eventos.

Módulos

Actualmente UADH cuenta con tres modulos:

Uadh.configurator

Un conjunto de bibliotecas para facilitar el uso de configuraciones para las aplicaciones.

Uadh.gui

Una biblioteca que permite el desarrollo de Interfaces Gráficas de Usuario que se ejecuten en cualquier entorno usando un conjunto común de clases y métodos.

Uadh.plugins

Motor de extensiones que permite crear aplicaciones modulares.

Aqui un poco mas de información especificamente extraida de planeta UREMIX explicando uadh.gui


El logo oficial de python (http://www.python.org)
El proyecto uadh, el mismo que es una biblioteca de propósito general desarrollado en python por Uremix, en esta ocasión hablaremos de uno de sus módulos: uadh.gui, un proyecto que puede ser capaz de cambiar la forma de diseñar y crear interfaces gráficas de usuario (GUI por sus siglas en inglés) en python.

Python es un lenguaje de programacion de proposito general, interpretado y de alto nivel; existen implementaciones en varias plataformas y varios sistemas operativos, la implementacion oficial es CPython (escrita en lenguaje C), pero existen otras alternativas como Jython (escrita en Java) o IronPython (escrita usando .Net); su facilidad de sintaxis, su facilidad de lectura sumado a que es un lenguaje multiparadigma (permite la programación Orientada a Objetos, programación estructurada, programación funcional, tiene interpretes interactivos, programación Orientada a Aspectos, etc.) han hecho que en los últimos años sea uno de los lenguajes preferidos a la hora de desarrollar aplicaciones en el mundo del software libre.
Una de las principales falencias de este lenguaje es que no ofrece un conjunto de bibliotecas para la implementación de interfaces gráficas de usuario, haciendo que muchos grupos de desarrolladores implementen sus propias bibliotecas y por consecuencia cada biblioteca tenga sus propias funciones y procediemientos para crear los componentes graficos (ventanas, botones, etiquetas, etc.) lo que hace que sea complicada la elección de la biblioteca para crear un programa grafico o que se tenga que reescribir la interfaz gráfica cuando se pase un programa de un S.O. a otro.
Este problema no sucede con otros lenguajes o otras tecnologías como Java o .Net que tienen sus propias blibliotecas gráficas (Java tiene AWT y SWING, .Net tiene WinForms y WinAPI) que estan estandarizadas y que una vez hecha la interfaz, la misma corre en otros S.O. donde este presente esa tecnología; por tanto es necesario para lograr portabilidad gráfica en python, el hacer que se estandarice una biblioteca gráfica para el diseño de GUI’s, el problema es que existen las bibliotecas y el hacer una estándar seria como reinventar la rueda, pues la biblioteca estandarizada deberia tener un cierto grado de integración con el S.O. anfitrión.
Con las anteriores premisas en mente es que nace el proyecto uadh.gui, un paquete de uadh especializado en la portabilidad a nivel de GUI para permitir que con un conjunto estándar de clases se pueden implementar aplicaciones que sean gráficamente nativas al entorno en donde se ejecuten.

ejemplo de uso uadh.gui
Un código de ejemplo de uso de uadh.gui

uadh.gui define clases como Label o Button, que tienen su manera de insertarse en contenedores Window o Container, los que también tienen métodos para fijarles un tamaño, posición o visibilidad, también trae soporte para eventos; creando un estándar para la creación de ventanas de una aplicación.

Captura de pantalla de la ejecución que muestra la ventana generada con uadh.gui del código de ejemplo en Linux
Captura de pantalla de la ejecución que muestra la ventana generada con uadh.gui del código de ejemplo en Linux
Lo que lo hace especial es su capacidad de poder identificar el sistema en el que la aplicación se esta ejecutando para luego buscar las bibliotecas gráficas compatibles con python que estén presentes en el S.O. y realiza una traducción en tiempo de ejecución a la biblioteca encontrada en el S.O. (si es Linux con GTK carga pyGTK, si es Linux con QT carga pyQT, si es Windows carga las dlls nativas o tkinter, etc.) mostrando interfaces nativas al sistema en ejecución.
Captura de pantalla de la ejecución que muestra la ventana generada con uadh.gui del código de ejemplo en Windows
Captura de pantalla de la ejecución que muestra la ventana generada con uadh.gui del código de ejemplo en Windows

El código fuente de uadh (incluyendo uadh.gui) esta liberado bajo la licencia GPLv3 y lo pueden encontrar en GitHub:

https://github.com/arielvega/uremix-app-developer-helper

Otro ejemplo que muestra los componentes gráficos que se encuentran implementados: GTK vs QT
Otro ejemplo que muestra los componentes gráficos que se encuentran implementados: GTK vs QT

Otro ejemplo que muestra los componentes gráficos que se encuentran implementados:  WinAPI vs GTK
Otro ejemplo que muestra los componentes gráficos que se encuentran implementados: WinAPI vs GTK

Este proyecto esta en sus primeras etapas de desarrollo, pero espera ofrecer a corto plazo una opción para que de la portabilidad en python sea mas completa.


Repositorio: UADH

2 comentarios

  1. jajaja, graciosa la redacción; me hubiera gustado presentar el proyecto este año en el CONASOL, pero las clases y los exámenes no me permiten viajar este año... :(, en estos dias y que pasen las ocupaciones retomaré este proyecto ya que es hora de dar portabilidad gráfica a ese lenguaje que me gusta tanto :D

    ResponderEliminar
  2. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar