Está en la página 1de 11

GUA PRCTICA DE PROGRAMACIN CON C Y GTK+ EN

ENTORNOS GNU/LINUX
Por: Ricardo Ar!ro G!"#$% Torr&'
((()*!a%a+o,)co#
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 interaz gr!ica, hacerlo con C es un proceso bastante di"cil,
pero podemos optar por #$%& '#()* tool+it, como nuestro tool+it gr!ico para realizar esta tarea.
La documentacin para trabajar con #$%& y C, en mi opinin es muy escasa y m!s 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 gu"a de reerencia.
- lo largo de este libro, trataremos de cubrir con ejemplos cada cap"tulo. .ecomiendo que tengas en
mente un proyecto en espec"ico, en el cual puedas ir aplicando todos los conocimientos que vayamos
aprendiendo a lo largo del libro, para que al inal tengas un buen programa con su interaz gr!ica que
puedas compartir con la comunidad Linuxera /, . 0o quise empezar a desarrollar este libro, por que
quiero darle una interaz gr!ica a varios programas que tengo en mente, uno es un generador de
diccionarios para an!lisis de seguridad, el cual compartir1 con ustedes y mostrar1 el procedimiento
mediante el cual le gener1 su interaz gr!ica.
SO-RE EL AUTOR
2o hay mucho que decir sobre mi, solo soy un programador mexicano que 3ltimamente tiene mucho
tiempo libre. Es por eso que quiero invertir este tiempo en algo productivo y si puedo ayudar a alguien
m!s con este libro considerar1 que la misin ue todo un 1xito.
4*or qu15
0o he aprendido mucho de los art"culos que he encontrado en (nternet y se de lo importante que es el
que siempre se est1n generando nuevas uentes de inormacin. -parte que como ya coment1, veo muy
escasa la documentacin en mi idioma y para las personas que no hablan ingl1s esto puede ser un gran
obst!culo. 6uiero aprovechar mi tiempo ayudando, por que a mi me sirve como programador para
reairmar 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 7amor al arte8. )e he dedicado m!s al desarrollo
9eb, p!ginas en *:* y -;-<.
;unto con unos amigos orm1 una empresa de desarrollo de sot9are, nos ubicamos en Len,
#uanajuato, )1xico, pueden visitar nuestra p!gina en/ 999.quanaxot.com
6uisiera estar al pendiente de los comentarios que pudieran salir de las personas que vayan leyendo
este libro, si encuentras alg3n error o simplemente quieres platicar sobre alg3n tema de programacin
te agradecer"a me dejaras un mensaje en mi blog/ http/==999.quanaxot.com=blog , abrir1 un *ost
donde vaya d!ndole seguimiento al libro y a los comentarios de los usuarios.

ANTES DE EMPE.AR
Co%oci#i&%o' /r&0io'
Es importante tener una base de programacin en C
Estar acostumbrado a trabajar en Linux a trav1s de la terminal
R&*!&ri#i&%o'
Este libro est! orientado a la comunidad linuxera. 2ecesitamos tener #2>=Linux instalado, en mi caso
yo estoy trabajando con >buntu ?.@A '%armic %oala,. 2ecesitaremos tener instalado/
>n compilador/ >tilizaremos #CC a lo largo del libro
>n editor de textos/ *uedes utilizar el que gustes, como el B() ... yo utilizar1 uno que me
parece muy bueno que se llama Clueish
>n emulador de terminal/ Siempre est! incluido en las distros #2>=Linux la terminal /,
Las librer"as #$%&
0 la aplicacin p+gDconig
CAPITULO 1
Sobre GTK+ y X Window System
Instalacin de componentes
-ntes de empezar, es importante que sepamos que es #$%&. :ago nota que en este libro no hablar1
sobre conceptos b!sicos de programacin en C, este libro est! orientado a gente que ya tenga un ondo
de conocimiento del lenguaje, trataremos de ir directamente hacia el uso del tool+it gr!ico.
ACERCA DE GTK+
#$%& o $he #()* $ool+it es un conjunto de bibliotecas multiplataorma para desarrollar interaces
gr!icas de usuario '#>(,, principalmente para los entornos gr!icos #2E)E, <FCE y .E< aunque
tambi1n se puede usar en el escritorio de Gindo9s, )acES y otros.
(nicialmente ueron creadas para desarrollar el programa de edicin de imagen #()*, sin embargo
actualmente se usan bastante por muchos otros programas en los sistemas #2>=Linux. ;unto a 6t es
una de las bibliotecas m!s populares para < Gindo9 System.
#$%& se ha diseHado para permitir programar con lenguajes como C, C&&, CI, ;ava, .uby, *erl, *:*
o *ython.
Licenciado bajo los t1rminos de L#*L, #$%& es sot9are libre y es parte del proyecto #2>.
Entornos que utilizan #$%&
J #2E)E est! basado en #$%&, lo que signiica que los programas de #2E)E usan #$%&
J <ce est! basado en #$%&
J L<KE est! basado en #$%&, signiica LLight9eight <@@ Kes+top EnvironmentL
J .E< Kes+top un escritorio ligero, con caracter"sticas de la #>( de .(SC ES
J #*E *almtop Environment
J )aemo '2o+iaMs (nternetDtablet rame9or+,
J -ccess Linux *latorm 'sucesor de la plataorma *alm ES *K-,
J Ene Laptop *er Child usa #$%& y *y#$%
Los entornos de escritorio no son necesarios para ejecutar los programas #$%&. Si las bibliotecas que
requiere el programa est!n instaladas, un programa #$%& puede ser ejecutado por encima de otros
entornos basadas en <@@ como %KE o cualquier otro entorno, lo que incluye )ac ES <, si <@@.app
est! instalado. #$%& tambi1n puede ejecutarse en )icrosot Gindo9s, es utilizado por algunas
aplicaciones populares multiplataorma como *idgin y el #()*. 9xGidgets, un tool+it gr!ico
multiplataorma usa #$%& en sistemas tipo >nix.N@O -lgunos de los ports m!s inusuales incluyen
directb y ncurses.
-plicaciones
-lgunas aplicaciones que usan #$%& como 9idget incluyen/
J -biGord D *rocesador de textos.
J Cine*aint 'ex Film#imp, D Editor de gr!icos animados en :K..
J E+iga 'ex #nome)eeting, D Sot9are telenico Bo(* :.PQP=S(*.
J Evolution D Cliente de correo electrnico.
J Fireox D 2avegador 9eb.
J #()* D Editor de gr!icos.
J #numeric D *rograma de hoja de c!lculo.
J Chromium D 2avegador Geb basado en Geb%it y desarrollado en gran medida por #oogle.
J #.-)*S D Sot9are de genealog"a.
J (n+scape D Editor de gr!icos vectoriales SB#.
J %PK D *rograma de modelado PK libre.
J )arionnet D >n simulador de red interactivo.
J )idori D 2avegador Geb portable.
J 2ero Linux D >n programa para la edicin de discos.
J *idgin D Cliente de mensajer"a instant!nea.
J B)9are *layer D )aquina virtual.
J Gireshar+ D Capturador y analizador de paquetes de red inal!mbrica.
)!s inormacin en/ http/==es.9i+ipedia.org=9i+i=#$%RQC
ACERCA DEL X 2INDO2 SYSTEM
< Gindo9 System 'en espaHol sistema de ventanas <, es un sot9are que ue desarrollado a
mediados de los aHos @?SA en el )($ para dotar de una interaz gr!ica a los sistemas >nix. Este
protocolo permite la interaccin gr!ica en red entre un usuario y una o m!s computadoras haciendo
transparente la red para 1ste. #eneralmente se reiere a la versin @@ de este protocolo, <@@, el que
est! en uso actualmente. < es el encargado de mostrar la inormacin gr!ica de orma totalmente
independiente del sistema operativo.
< ue diseHado primariamente para implementar clientes ligeros, donde mucha gente usaba
simult!neamente la capacidad de procesamiento de un mismo computador trabajando en tiempo
compartido. Cada persona usaba un terminal en red que ten"a capacidades limitadas para dibujar la
pantalla y aceptar la entrada del usuario. Kebido a la ubicuidad del soporte para el sot9are < en
>nix, es usado en los computadores personales incluso cuando no hay necesidad del tiempo
compartido.
El sistema de ventanas < distribuye el procesamiento de aplicaciones especiicando enlaces clienteD
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. Ke este modo
mientras el servidor se ejecuta de manera local, las aplicaciones pueden ejecutarse remotamente desde
otras m!quinas, proporcionando as" el concepto de transparencia de red.
Kebido a este esquema clienteDservidor, se puede decir que < se comporta como una terminal gr!ica
virtual.
)!s inormacin en/ http/==es.9i+ipedia.org=9i+i=<TGindo9TSystem
INSTALANDO GTK+
Cueno, mostrar1 en este cap"tulo el m1todo para instalar las aplicaciones y librer"as que necesitamos.
Estoy trabajando en >buntu ?.@A pero la orma de instalacin creo que puede ser aplicable de igual
manera a otras distribuciones.
2ecesitamos instalar #$%& y sus dependencias, la ventaja de trabajar con distribuciones derivadas de
Kebian es que podemos utilizar el pac+age manager y acilitarnos las cosas. 2ecesitaremos tambi1n los
paquetes de desarrollo, los podemos reconocer por que tienen terminacin Ddev, o Ddevel para
distribuciones como Fedora Core '.*),.
*ara instalar #$%& necesitaremos #lib, *ango y algunos paquetes #$%&. *odemos descargarlos de la
p!gina oicial de gt+/ http/==999.gt+.org=do9nloadDlinux.html
Las versiones pueden cambiar con el paso del tiempo, pero en mi caso estos son los archivos que
descargu1/
gt+&DQ.QQ.A.tar.gz
*odemos instalar las dependencias de una manera r!pida aprovechando que estamos en >buntu/
$ sudo aptitude install gnome-core-devel build-essential
Ke preerencia crearemos una nueva carpeta donde guardaremos el archivo de gt+ que descargamos.
Los pasos a seguir son ejecutar los siguientes comandos desde la terminal, vamos a descomprimir el
archivo que bajamos/
U tar Dxvz gt+&DQ.QQ.A.tar.gz
Se nos crear! una nueva carpeta/ gt+&DQ.QQ.A
U cd gt+&DQ.QQ.A=
En esta carpeta tenemos un shell script llamado co%,i3!r& , el cual debemos correr para que se vayan
creando los )a+eiles necesarios para instalar el programa. El script co%,i3!r& puede recibir varios
par!metros, pero solo le indicaremos que instale gt+ en la ruta =opt=gt+ y coniaremos en las opciones
por deault, ejecutamos entonces/
U .=conigure DDpreixV=opt=gt+
-l hacerlo a mi me marca el siguiente error/
.equested Mat+ WV @.Q?.QM but version o -t+ is @.QS.A
.equested Mgd+DpixbuDQ.A WV Q.Q@.AM but version o #d+*ixbu is Q.@S.P
Eso quiere decir que en el primer paso si se instal at+ y gd+Dpixbu pero la versin que tenemos es
inerior a la que necesita gt+ para uncionar.
Entonces tenemos que bajar una versin de at+ m!s reciente, la podemos encontrar buscando en
google, yo la encontr1 en/ http/==999.ice9al+ers.com=Linux=Sot9are=X@YPPA=-$%.html
La descargamos y hacemos los pasos/
U tar Dxvz at+D@.Q?.Y.tar.gz
U cd at+D@.Q?.Y
U .=conigure
U ma+e
U sudo ma+e install
E+, ahora buscamos para gd+Dpixbu una versin mas reciente, la podemos encontrar en/
http/==tp.gnome.org=pub=#2E)E=sources=gd+Dpixbu=Q.Q@=
Kescomprimimos/
U tar Dxvz gd+DpixbuDQ.Q@.P.tar.gz
U cd gd+DpixbuDQ.Q@.P=
== *aso opcional, gd+Dpixbu requiere de la libreria libti, si no la tenemos hacemos/
U sudo aptitude install libtiDdev
Continuando con la instalacin/
U .=conigure
U ma+e
U sudo ma+e install
E+, entonces ya solucionamos el problema de las dependencias altantes, nos altar"a nadamas ir otra
vez a la carpeta donde descomprimimos el gt+ y volvemos al paso en que nos quedamos/
U .=conigure DDpreixV=opt=gt+
E+ esta vez no marc problemas asi que podemos proceder/
U ma+e
U sudo ma+e install
>na vez teniendo lista la instalacin podemos proceder a lo divertido, programarZ
*odemos encontrar m!s inormacin del proceso de instalacin en/
http/==library.gnome.org=devel=gt+=stable=gt+Dbuilding.html
Si tienes algun problema al instalar comentalo en el oro/ http/==999.quanaxot.com=blog si no puedo
ayudarte yo a lo mejor algun otro visitante si podr!.
CAPITULO 4
Nuestra primera aplicacin
Conceptos bsicos sobre GTK+
Cueno, ya tenemos preparado el terreno, 0a est! instalado #$%&, tenemos nuestro compilador y un
coniable editor de textos. Solo nos alta empezar a programar. En este cap"tulo iremos cubriendo los
aspectos b!sicos que giran en torno a la programacin de interaces gr!icas en C con #$%&.
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 !in "int !#gc$ ch!# *!#g%&'( )
Gtk*idget *+ind,+-
gtk.init "/!#gc$ /!#g%(-
+ind,+ 0 gtk.+ind,+.ne+ "GTK.*IN1O*.TOP2E3E2(-
gtk.+ind,+.4et.title "GTK.*IN1O* "+ind,+($ 5Mi 6#ie# 6#,g#!!5(-
gtk.+idget.4h,+ "+ind,+(-
gtk.!in "(-
#etu#n 7-
8
Empezar1 a hablar a detalle sobre cada l"nea respectiva al cdigo, pero primero veremos como
compilar este cdigo 'sirve que veriicamos que realmente hayamos instalado bien #$%&,.
#uardaremos el archivo como prueba.c, abriremos una terminal y ejecutaremos en el directorio donde
tengamos a prueba.c/
U gcc DGall Dg prueba.c Do prueba [p+gDconig DDclags DDlibs gt+&DQ.A[
Se nos generar! el ejecutable con el nombre de prueba, lo corremos en la terminal a trav1s de/
U .=prueba

También podría gustarte