Desenvolver interfaces gráficas é, para a maioria dos programadores (como eu, por exemplo), um martírio. Para mim, começa do fato que debugar uma interface gráfica é infinitamente mais trabalhoso que debugar um aplicativo em console, mas o principal problema a meu ver é que eu não tenho a menor noção de estética (ou pelo menos a minha noção costuma ser bem diferente da noção dos usuários finais).
De qualquer forma, quando o público alvo de um aplicativo não tem a menor ideia do que é uma console, é fundamental termos uma interface gráfica que torne simples para qualquer pessoa o uso das funções desse aplicativo.
Como não há muito como fugir das interfaces gráficas, é preciso escolher uma forma de desenvolver essas interfaces. Temos diversas bibliotecas gráficas, mas vamos tratar especificamente da biblioteca GTK+ por algumas características:
- Licença LGPL, o que dá uma grande flexibilidade na licença do aplicativo a ser desenvolvido;
- Bem documentada, o que é fundamental para o desenvolvedor, afinal ninguém quer perder tempo tentando adivinhar pra que serve cada função da biblioteca;
- Com a GTK+ você consegue migrar (pelo menos a interface gráfica) para muitos sistemas, até para o Windows e dispositivos com framebuffer.
Neste artigo farei uma breve introdução de como começar a desenvolver interfaces gráficas utilizando a biblioteca GTK+ e a linguagem C.
Requisitos
Primeiro de tudo, precisamos da biblioteca e de um ambiente de desenvolvimento.
Nesse ponto você pode escolher baixar o código fonte, compilar e instalar a biblioteca... alguns anos atrás (quando eu ainda era fanático pelo Slackware) é o que eu faria, mas hoje o que eu faço é um apt-get (será que estou ficando preguiçoso?).
No Debian é o seguinte:
# apt-get install build-essential
para instalar gcc, bibliotecas padrões e essas coisas.
# apt-get install libgtk2.0-dev
para instalar a biblioteca gtk+, aceite todas as dependências.
Para quem quiser fazer a partir do código fonte, é fazer o famoso:
# ./configure
# make
# make install
Pra ver se está tudo certo (ou quase certo):
# pkg-config --cflags --libs gtk+-2.0
Deve retornar algo parecido com:
-D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/pixman-1 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
Esse artigo não é uma introdução a C, vou partir do princípio que pelo menos o básico da linguagem de programação é conhecido pelo leitor.