Siendo la interfaz de usuario uno de los elementos principales de este proyecto (pues la facilidad de uso es un elemento clave), fue importante encontrar un ambiente de desarrollo adecuado, con los widgets y elementos de interfaz a los que estamos acostumbrados.
Experiencias previas me habían demostrado cuán importantes son las interfaces de usuario. Por ejemlo, alguna vez programé en el JDK 1.2 y 1.3 usando Swing; lamentablemente sus elementos de interfaz y hasta sus cuadrois de diálogo son tan distintos a los de Windows (o por lo menos lo eran en ese momento) que causaban serios problemas a los usuarios, quienes se veían forzados a aprender de nuevo lo que era el manejo de la interfaz. Tengo entendido que eso ya fue resuelto en las nuevas versiones del JDK de Sun.
Por fortuna, GTK+ reutiliza los cuadros de diálogo del sistema operativo donde se encuentra y da acceso a widgets que, si bien no son 100% iguales a los de Windows, son muy pero muy parecidos evitando así que el usuario tenga que "re-aprender" a usar la interfaz.
GTK+ suministra un programa, llamado Glade, que permite editar interfaces de usuario y generar código en lenguaje C que puede ser compilado bajo GCC o incluso bajo Visual C++ sin ningún problema, generando un cascarón con los eventos y funciones, de tal forma que el programador sólo deba sentarse a llenarlos con las funcionalidades de su aplicación. ¡Un tiro al piso!
Problemas en el paraísoLamentablemente, yo debo usar C++, no C. Ello no sólo porque quiero aprovechar las características de un lenguaje orientado a objetos (polimorfismo, herencia, etc.) sino porque deseo utilizar el parser Xerces C++ para trabajar con los archivos XML.
Glade puede generar código en C, C++ o Ada95, pero para generar código en estos dos lenguajes requiere de un programa externo que haga esa misión.
El problema de usar este programa externo, llamado glademm o glade--, es que, bajo Windows, dicho programa no existe. No viene con el paquete de
Glade para Windows, y la versión que
se puede conseguir en Internet simplemente no funciona (hace crash en tres computadoras distintas donde he hecho la prueba).
Tengo entonces estas opciones:
- Usar C, perder todas las características de orientación a objetos y buscar otra forma de parsear archivos XML que no sea usando a Xerces C++
- Buscar una forma de resolver el problema con glademm, ya sea compilando yo mismo una versión que funcione bajo Windows, o utilizar la versión bajo Linux, generar el código allí, traerlo a Windows y continuar trabajando.
- Utilizar desde mi aplicación las bibliotecas libglademm, que permiten trabajar con el código XML que genera Glade para guardar los archivos y generar la interfazx a partire d