Página siguiente Página anterior Índice general

1. Introducción

GTK (GIMP Toolkit) es una biblioteca para crear interfaces gráficas de usuario. Su licencia es la LGPL, así que mediante GTK podrá desarrollar programas con licencias abiertas, gratuitas, libres, y hasta licencias comerciales no libres sin mayores problemas.

Se llama el GIMP toolkit porque fue escrito para el desarrollo del General Image Manipulation Program (GIMP), pero ahora GTK se utiliza en un gran número de proyectos de programación, incluyendo el proyecto GNU Network Object Model Environment (GNOME). GTK está construido encima de GDK (GIMP Drawing Kit) que básicamente es un recubrimiento de las funciones de bajo nivel que deben haber para acceder al sistema de ventanas sobre el que se programe (Xlib en el caso de X windows). Los principales autores de GTK son:

GTK es esencialmente una interfaz para la programación de aplicaciones orientadas al objeto (API). Aunque está completamente escrito en C, esta implementado haciendo uso de la idea de clases y de funciones respuesta o de callback (punteros o funciones).

Tenemos un tercer componente llamado glib, que contiene unas cuantas funciones para reemplazar algunas llamadas estándar, así como funciones adicionales para manejar listas enlazadas, etc... Se reemplazan algunas funciones para aumentar la portabilidad de GTK, ya que algunas de las funciones implementadas no están disponibles o no son estándar en otros unixs, como por ejemplo g_strerror(). Algunas otras contienen mejoras a la versión de libc, como g_malloc que mejora las posibilidades de encontrar errores.

Este tutorial describe la interfaz C de GTK. Hay recubrimientos GTK para muchos otros lenguajes, incluyendo C++, Guile, Perl, Python, TOM, Ada95, Objective C, Free Pascal, y Eiffel. Si va a utilizar el recubrimiento para alguno de estos lenguajes, mire primero su documentación. En algunos casos la documentación puede describir algún convenio importante (que debería conocer de antemano) y después puede volver a este tutorial. También hay algún API multiplataforma (como wxWindows y V) que utilizan GTK como una de sus plataformas destino; de nuevo, consulte primero la documentación que viene con estos paquetes.

Si está desarrollando su aplicación GTK en C++, hay algunas cosas que debería saber. Hay un recubriento a GTK para C++ llamado GTK--, que proporciona una interfaz C++ a GTK; probablemente debería empezar mirando ahí. Si no le gusta esa aproximación al problema, por los motivos que sean, tiene dos alternativas. Primero, puede ceñirse al subconjunto C de C++ cuando realice alguna llamada a GTK a través de su interfaz en C. Segundo, puede utilizar GTK y C++ al mismo tiempo declarando todas las funciones respuesta como funciones estáticas en clases C++, y de nuevo, llamar a GTK utilizando su interfaz C. Si elige esta última forma de actuar, puede incluir como dato de la función respuesta un puntero al objeto a manipular (el también llamado valor «this»). La elección de una u otra opción es cuestión de gustos personales, ya que de las tres maneras conseguirá utilizar GTK en C++. Ninguna de estas aproximaciones requiere el uso de un preprocesador especializado, por lo que sin importar la opción que escoja podrá utilizar C++ estándar en C++.

Este tutorial es un intento de documentar GTK tanto como sea posible, pero no está completo. Este tutorial asume un buen conocimiento de C y de como crear programas bajo este lenguaje. Se verá beneficiado si tiene un conocimiento previo de la programación en X, pero no debería ser necesario. Si está aprendiendo GTK y es el primer conjunto de widgets que utiliza, por favor envíenos sus comentarios sobre este tutorial y los problemas que ha encontrado.

Este documento es un `trabajo pendiente de finalizar'. Para encontrar actualizaciones mire en http://www.gtk.org/ http://www.gtk.org/.

Me gustaría escuchar cualquier problema que le surja mientras aprende GTK siguiendo este documento, y apreciaré cualquier información sobre como mejorarlo. Por favor, vea la sección Contribuyendo para encontrar más información.


Página siguiente Página anterior Índice general