Está en la página 1de 11

GUA PRCTICA DE PROGRAMACIN CON C Y GTK+ EN

ENTORNOS GNU/LINUX

Por: Ricardo Arturo Guzmn Torres


www.quanaxoft.com
INTRODUCCIN

El inclinarnos hacia un lenguaje de programacin para hacer una tarea determinada es una tarea algo
complicada, con tantas opciones que hay. Sin embargo, al trabajar en Linux veo muy poderoso el
utilizar como lenguaje el C. Con el tenemos un amplio repertorio de posibilidades. El problema es
cuando queremos realizar programas con interfaz grfica, hacerlo con C es un proceso bastante difcil,
pero podemos optar por GTK+ (GIMP toolkit) como nuestro toolkit grfico para realizar esta tarea.

La documentacin para trabajar con GTK+ y C, en mi opinin es muy escasa y ms para los
hispanohablantes. Es por eso que he decidido crear este documento, intentando apoyar un poco a la
comunidad con lo que espero pueda ser una interesante gua de referencia.

A lo largo de este libro, trataremos de cubrir con ejemplos cada captulo. Recomiendo que tengas en
mente un proyecto en especfico, en el cual puedas ir aplicando todos los conocimientos que vayamos
aprendiendo a lo largo del libro, para que al final tengas un buen programa con su interfaz grfica que
puedas compartir con la comunidad Linuxera :) . Yo quise empezar a desarrollar este libro, por que
quiero darle una interfaz grfica a varios programas que tengo en mente, uno es un generador de
diccionarios para anlisis de seguridad, el cual compartir con ustedes y mostrar el procedimiento
mediante el cual le gener su interfaz grfica.
SOBRE EL AUTOR
No hay mucho que decir sobre mi, solo soy un programador mexicano que ltimamente tiene mucho
tiempo libre. Es por eso que quiero invertir este tiempo en algo productivo y si puedo ayudar a alguien
ms con este libro considerar que la misin fue todo un xito.

Por qu?
Yo he aprendido mucho de los artculos que he encontrado en Internet y se de lo importante que es el
que siempre se estn generando nuevas fuentes de informacin. Aparte que como ya coment, veo muy
escasa la documentacin en mi idioma y para las personas que no hablan ingls esto puede ser un gran
obstculo. Quiero aprovechar mi tiempo ayudando, por que a mi me sirve como programador para
reafirmar y mejorar mis conocimientos y habilidades.

En mis tiempos libres me gusta mucho programar en C, sin embargo llevo algo de tiempo que no he
podido realizar un programa por el simple hecho de amor al arte. Me he dedicado ms al desarrollo
web, pginas en PHP y AJAX.

Junto con unos amigos form una empresa de desarrollo de software, nos ubicamos en Len,
Guanajuato, Mxico, pueden visitar nuestra pgina en: www.quanaxoft.com

Quisiera estar al pendiente de los comentarios que pudieran salir de las personas que vayan leyendo
este libro, si encuentras algn error o simplemente quieres platicar sobre algn tema de programacin
te agradecera me dejaras un mensaje en mi blog: http://www.quanaxoft.com/blog , abrir un Post
donde vaya dndole seguimiento al libro y a los comentarios de los usuarios.
ANTES DE EMPEZAR
Conocimientos previos

Es importante tener una base de programacin en C


Estar acostumbrado a trabajar en Linux a travs de la terminal

Requerimientos

Este libro est orientado a la comunidad linuxera. Necesitamos tener GNU/Linux instalado, en mi caso
yo estoy trabajando con Ubuntu 9.10 (Karmic Koala). Necesitaremos tener instalado:

Un compilador: Utilizaremos GCC a lo largo del libro


Un editor de textos: Puedes utilizar el que gustes, como el VIM ... yo utilizar uno que me
parece muy bueno que se llama Bluefish
Un emulador de terminal: Siempre est incluido en las distros GNU/Linux la terminal :)
Las libreras GTK+
Y la aplicacin pkg-config
CAPITULO 1
Sobre GTK+ y X Window System
Instalacin de componentes
Antes de empezar, es importante que sepamos que es GTK+. Hago nota que en este libro no hablar
sobre conceptos bsicos de programacin en C, este libro est orientado a gente que ya tenga un fondo
de conocimiento del lenguaje, trataremos de ir directamente hacia el uso del toolkit grfico.

ACERCA DE GTK+

GTK+ o The GIMP Toolkit es un conjunto de bibliotecas multiplataforma para desarrollar interfaces
grficas de usuario (GUI), principalmente para los entornos grficos GNOME, XFCE y ROX aunque
tambin se puede usar en el escritorio de Windows, MacOS y otros.

Inicialmente fueron creadas para desarrollar el programa de edicin de imagen GIMP, sin embargo
actualmente se usan bastante por muchos otros programas en los sistemas GNU/Linux. Junto a Qt es
una de las bibliotecas ms populares para X Window System.

GTK+ se ha diseado para permitir programar con lenguajes como C, C++, C#, Java, Ruby, Perl, PHP
o Python.

Licenciado bajo los trminos de LGPL, GTK+ es software libre y es parte del proyecto GNU.

Entornos que utilizan GTK+

* GNOME est basado en GTK+, lo que significa que los programas de GNOME usan GTK+
* Xfce est basado en GTK+
* LXDE est basado en GTK+, significa "Lightweight X11 Desktop Environment"
* ROX Desktop un escritorio ligero, con caractersticas de la GUI de RISC OS
* GPE Palmtop Environment
* Maemo (Nokia's Internet-tablet framework)
* Access Linux Platform (sucesor de la plataforma Palm OS PDA)
* One Laptop Per Child usa GTK+ y PyGTK

Los entornos de escritorio no son necesarios para ejecutar los programas GTK+. Si las bibliotecas que
requiere el programa estn instaladas, un programa GTK+ puede ser ejecutado por encima de otros
entornos basadas en X11 como KDE o cualquier otro entorno, lo que incluye Mac OS X, si X11.app
est instalado. GTK+ tambin puede ejecutarse en Microsoft Windows, es utilizado por algunas
aplicaciones populares multiplataforma como Pidgin y el GIMP. wxWidgets, un toolkit grfico
multiplataforma usa GTK+ en sistemas tipo Unix.[1] Algunos de los ports ms inusuales incluyen
directfb y ncurses.

Aplicaciones

Algunas aplicaciones que usan GTK+ como widget incluyen:

* AbiWord - Procesador de textos.


* CinePaint (ex FilmGimp) - Editor de grficos animados en HDR.
* Ekiga (ex GnomeMeeting) - Software telefnico VoIP H.323/SIP.
* Evolution - Cliente de correo electrnico.
* Firefox - Navegador web.
* GIMP - Editor de grficos.
* Gnumeric - Programa de hoja de clculo.
* Chromium - Navegador Web basado en WebKit y desarrollado en gran medida por Google.
* GRAMPS - Software de genealoga.
* Inkscape - Editor de grficos vectoriales SVG.
* K3D - Programa de modelado 3D libre.
* Marionnet - Un simulador de red interactivo.
* Midori - Navegador Web portable.
* Nero Linux - Un programa para la edicin de discos.
* Pidgin - Cliente de mensajera instantnea.
* VMware Player - Maquina virtual.
* Wireshark - Capturador y analizador de paquetes de red inalmbrica.

Ms informacin en: http://es.wikipedia.org/wiki/GTK%2B

ACERCA DEL X WINDOW SYSTEM

X Window System (en espaol sistema de ventanas X) es un software que fue desarrollado a
mediados de los aos 1980 en el MIT para dotar de una interfaz grfica a los sistemas Unix. Este
protocolo permite la interaccin grfica en red entre un usuario y una o ms computadoras haciendo
transparente la red para ste. Generalmente se refiere a la versin 11 de este protocolo, X11, el que
est en uso actualmente. X es el encargado de mostrar la informacin grfica de forma totalmente
independiente del sistema operativo.

X fue diseado primariamente para implementar clientes ligeros, donde mucha gente usaba
simultneamente la capacidad de procesamiento de un mismo computador trabajando en tiempo
compartido. Cada persona usaba un terminal en red que tena capacidades limitadas para dibujar la
pantalla y aceptar la entrada del usuario. Debido a la ubicuidad del soporte para el software X en
Unix, es usado en los computadores personales incluso cuando no hay necesidad del tiempo
compartido.

El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando enlaces cliente-


servidor. El servidor provee servicios para acceder a la pantalla, teclado y ratn, mientras que los
clientes son las aplicaciones que utilizan estos recursos para interaccin con el usuario. De este modo
mientras el servidor se ejecuta de manera local, las aplicaciones pueden ejecutarse remotamente desde
otras mquinas, proporcionando as el concepto de transparencia de red.

Debido a este esquema cliente-servidor, se puede decir que X se comporta como una terminal grfica
virtual.

Ms informacin en: http://es.wikipedia.org/wiki/X_Window_System


INSTALANDO GTK+

Bueno, mostrar en este captulo el mtodo para instalar las aplicaciones y libreras que necesitamos.
Estoy trabajando en Ubuntu 9.10 pero la forma de instalacin creo que puede ser aplicable de igual
manera a otras distribuciones.

Necesitamos instalar GTK+ y sus dependencias, la ventaja de trabajar con distribuciones derivadas de
Debian es que podemos utilizar el package manager y facilitarnos las cosas. Necesitaremos tambin los
paquetes de desarrollo, los podemos reconocer por que tienen terminacin -dev, o -devel para
distribuciones como Fedora Core (RPM).

Para instalar GTK+ necesitaremos Glib, Pango y algunos paquetes GTK+. Podemos descargarlos de la
pgina oficial de gtk: http://www.gtk.org/download-linux.html

Las versiones pueden cambiar con el paso del tiempo, pero en mi caso estos son los archivos que
descargu:

gtk+-2.22.0.tar.gz

Podemos instalar las dependencias de una manera rpida aprovechando que estamos en Ubuntu:

$ sudo aptitude install gnome-core-devel build-essential

De preferencia crearemos una nueva carpeta donde guardaremos el archivo de gtk que descargamos.
Los pasos a seguir son ejecutar los siguientes comandos desde la terminal, vamos a descomprimir el
archivo que bajamos:

$ tar -xvzf gtk+-2.22.0.tar.gz

Se nos crear una nueva carpeta: gtk+-2.22.0


$ cd gtk+-2.22.0/

En esta carpeta tenemos un shell script llamado configure , el cual debemos correr para que se vayan
creando los Makefiles necesarios para instalar el programa. El script configure puede recibir varios
parmetros, pero solo le indicaremos que instale gtk en la ruta /opt/gtk y confiaremos en las opciones
por default, ejecutamos entonces:

$ ./configure --prefix=/opt/gtk

Al hacerlo a mi me marca el siguiente error:

Requested 'atk >= 1.29.2' but version of Atk is 1.28.0


Requested 'gdk-pixbuf-2.0 >= 2.21.0' but version of GdkPixbuf is 2.18.3

Eso quiere decir que en el primer paso si se instal atk y gdk-pixbuf pero la versin que tenemos es
inferior a la que necesita gtk para funcionar.

Entonces tenemos que bajar una versin de atk ms reciente, la podemos encontrar buscando en
google, yo la encontr en: http://www.icewalkers.com/Linux/Software/514330/ATK.html

La descargamos y hacemos los pasos:

$ tar -xvzf atk-1.29.4.tar.gz


$ cd atk-1.29.4
$ ./configure
$ make
$ sudo make install

Ok, ahora buscamos para gdk-pixbuf una versin mas reciente, la podemos encontrar en:
http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.21/

Descomprimimos:

$ tar -xvzf gdk-pixbuf-2.21.3.tar.gz


$ cd gdk-pixbuf-2.21.3/

// Paso opcional, gdk-pixbuf requiere de la libreria libtiff, si no la tenemos hacemos:


$ sudo aptitude install libtiff-dev

Continuando con la instalacin:


$ ./configure
$ make
$ sudo make install

Ok, entonces ya solucionamos el problema de las dependencias faltantes, nos faltara nadamas ir otra
vez a la carpeta donde descomprimimos el gtk y volvemos al paso en que nos quedamos:

$ ./configure --prefix=/opt/gtk

Ok esta vez no marc problemas asi que podemos proceder:

$ make
$ sudo make install

Una vez teniendo lista la instalacin podemos proceder a lo divertido, programar!

Podemos encontrar ms informacin del proceso de instalacin en:


http://library.gnome.org/devel/gtk/stable/gtk-building.html

Si tienes algun problema al instalar comentalo en el foro: http://www.quanaxoft.com/blog si no puedo


ayudarte yo a lo mejor algun otro visitante si podr.
CAPITULO 2
Nuestra primera aplicacin
Conceptos bsicos sobre GTK+
Bueno, ya tenemos preparado el terreno, Ya est instalado GTK+, tenemos nuestro compilador y un
confiable editor de textos. Solo nos falta empezar a programar. En este captulo iremos cubriendo los
aspectos bsicos que giran en torno a la programacin de interfaces grficas en C con GTK+.

Empezaremos creando una ventana sencilla, la cual estar a la espera del evento donde la cerremos. El
cdigo es el siguiente:

/************************************/
/* MI PRIMER PROGRAMA CON GTK+ */
/************************************/

#include <gtk/gtk.h>

int main (int argc, char *argv[]) {


GtkWidget *window;
gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);


gtk_window_set_title (GTK_WINDOW (window), "Mi primer programa");
gtk_widget_show (window);
gtk_main ();
return 0;
}

Empezar a hablar a detalle sobre cada lnea respectiva al cdigo, pero primero veremos como
compilar este cdigo (sirve que verificamos que realmente hayamos instalado bien GTK+).

Guardaremos el archivo como prueba.c, abriremos una terminal y ejecutaremos en el directorio donde
tengamos a prueba.c:

$ gcc -Wall -g prueba.c -o prueba `pkg-config --cflags --libs gtk+-2.0`


Se nos generar el ejecutable con el nombre de prueba, lo corremos en la terminal a travs de:

$ ./prueba

También podría gustarte