Toolkits Gráficos

Artigo originalmente escrito para a revista online da unicamp

Atenção, este artigo foi escrito em 1999!

Toolkits

Vimos em nosso último artigo que o Linux, como a maioria dos sistemas Unix, possui um ambiente gráfico baseado em arquitetura cliente-servidor chamado "X Window System". O X Window System provê a funcionalidade de rede do sistema gráfico, o controle dos dispositivos gráficos e de entrada (mouse, teclado) do sistema e algumas primitivas básicas de desenho (linhas, pontos, cores, etc).

Para uma apresentação completa ao usuário precisa-se uma definição do que se convencionou chamar de "Look and Feel" ou seja, a aparência e o comportamento do ambiente gráfico que são implementadas por duas camadas adicionais de software: os "Graphical User Interface toolkits" (ou simplesmente toolkits) e os "Window Managers". Neste artigo exploraremos os toolkits.

Os toolkits são ferramentas para a programação em ambiente gráfico. Quando um programador cria um novo programa para Windows ele não tem muita escolha além de usar os botões, barras de rolagem e outros "widgets" (recursos de interação com o usuário, como os já citados botões e barras de rolagem) fornecidos pelo sistema. Em Unix, existem várias bibliotecas que implementam o que será a aparência do programa. Dependendo do toolkit usado, a aplicação terá um "Look and Feel" diferente.

À primeira vista este esquema pode parecer confuso, mas lembre-se que os princípios de flexibilidade e de liberdade de escolha foram levados em conta no design dos sistemas Unix. Um programador pode escolher qual Toolkit utilizar para desenvolver sua aplicação de acordo com seus objetivos, necessidades ou qualificações e não ficar amarrado a um "look and feel" específico. O lado bom é que existem toolkits de todas as formas e para todos os gostos, o lado ruim é que a grande variedade de toolkits disponíveis tende a fazer com que não exista uma consistência de look and feel entre todas as aplicações Unix.

Alguns toolkits muito utilizados são:

GTK

GTK+ (The Gimp Toolkit) - http://www.gtk.org.
Originalmente escrito para se desenvolver o gimp (nota de rodapé 1) em substituição ao motif. É uma biblioteca com licença LGPL, ou seja, você pode usá-la, modificá-la e redistribuí-la livremente. É hoje uma das mais utilizadas para a produção de software livre, por ser muito completa e por ser LGPL, além de poder ser utilizada com várias linguagens de programação, como C/C++, Guile, Perl, Python, TOM, Ada95, Free Pascal, Eiffel e outras.

O Mozilla Group estará usando GTK na versão de desenvolvimento do Mozilla (a versão Open Source do Netscape)

Todo o desktop gnome (nota de rodape 2), http://www.gnome.org, e seus aplicativos foram escritos usando-se o Gtk para a interface gráfica.

Algumas telas de exemplos de widgets que GTK fornece:
Botões: http://www.gtk.org/screenshots/buttons.gif
Listas multicoluna: http://www.gtk.org/screenshots/clist.gif
Blocos de Notas: http://www.gtk.org/screenshots/notebook-standard.gif
Seleção de cores: http://www.gtk.org/screenshots/colorselection.gif

Uma lista mais completa de imagens dos widgets fornecidos pela biblioteca GTK pode ser encontrada em:
http://www.gtk.org/screenshots/index-all.html

Lesstif

Lesstif: Um clone livre do Motif 1.2 http://www.lesstif.org Motif é um toolkit comercial cujo padrão é mantido pelo Open Group http://www.opengroup.org (que em artigo anterior eu ja citei dizendo que não era tão "open" assim).

Existem várias implementações comerciais do Motif de vários fabricantes. Todas estas implementações utilizam código fonte escrito pelo Open Group, que precisa ser licenciado. As bibliotecas do Motif estão presentes na maioria dos sistemas comerciais, por isso, grande parte das aplicações comerciais são escritas usando-se Motif.

O Lesstif é um clone livre, escrito completamente do zero e sem se basear no código do Open Group. Ele usa a Licensa LGPL e foi feito por um grupo autoentitulado "The Hungry Programmers" (Os programadores famintos, talvez uma piada com o fato do grupo não produzir software comercial) http://www.hungry.org .

A idéia é que muito software havia sido produzido usando-se Motif como toolkit em outros sistemas Unix e mesmo que o código fonte destas aplicações estivesse disponível estes programas não poderiam ser livres se não existisse uma versão free consistente do motif. Nenhum software é livre se depender de componentes comerciais.

Treeps, um visualizador gráfico de processos escrito usando Lestiff (ou Motif)
http://24.1.97.22/gmd/tps/treepsfm.html
http://24.1.97.22/gmd/graphics/treeps/userdem.gif

Qt

Qt http://www.troll.no/products/qt.html , um Toolkit comercial, feito pela empresa Norueguesa Troll Tech http://www.troll.no .

Existem duas versões desta biblioteca, uma gratuita para fins não comerciais e outra comercial (que inclui qualquer uso em Windows ou Macintosh).

Muitas aplicações foram escritas para Linux (nota de rodapé 3) usando esta biblioteca, o que gerou polêmica pois ela nem sempre foi Completamente Livre (pelo menos até a escrita deste artigo).
Ela desde o início foi gratuita para o desenvolvimento de software livre, mas alguns detalhes de sua licensa impedia a livre distribuição da biblioteca em distribuições de linux, e por consequência, todos os programas que dela dependiam.

Qt é orientado a objetos, e escrita completamente em C++. Um programa escrito usando-se Qt pode ser recompilado em um computador com Windows, pois existe também uma versão (comercial) da biblioteca disponível para este sistema.

A versão do Browser Opera ( http://www.operasoftware.com) para linux usará a biblioteca Qt.
Uma aplicação exemplo do Qt: http://www.troll.no/gif/widgets-cpp.gif
Outros links com exemplos do Qt: http://www.troll.no/exprog.html

Motif

Motif : http://www.opengroup.org/motif
Motif é o toolkit usado por grande parte das aplicações comerciais, como por exemplo o browser netscape em sua versão não-free.
O Open Group controla o padrão e vários revendedores o implementam, pagando uma taxa considerável para licenciar a tecnologia. Para linux, um dos fabricantes que vendem licensas do Motif é a Metro Link:
http://www.metrolink.com/products/motif/

Caso você queira escrever software comercial para linux e não disponibilizar seu código fonte (que coisa feia!) as melhores escolhas são os toolkits Motif e Qt, mas lembre-se das sábias palavras de Linus Torvalds: "Software is like sex. It's better when it's free". ("Software é como sexo, é melhor quando é livre/de graça.").

WxWindows

Um toolkit de nível mais alto do que os demais, com Licença derivada da LGPL, sendo ainda mais liberal e permitindo que software comercial também seja escrito, caso o toolkit com o qual você está ligando o WxWindows também o permita.

O WxWindows é uma biblioteca escrita em C++ que visa ser completamente portável, assim, um programa escrito no Solaris com wxwindows pode ser recompilado no Linux ou no windows com alguma ou nenhuma modificação.

Ele consegue isso sendo uma camada adicional de software sobre vários outros toolkits, criando assim uma interface de programação única tanto para Unix como para Windows, independente do toolkit escolhido.

A biblioteca wxwindows uniformiza outras interfaces, além da gráfica, como a de programação de sockets (rede). Aplicações escritas usando-se WxWindows podem variar seu look and feel ligeiramente entre plataformas, dependendo do toolkit utilizado na plataforma em questão.

Existe a possibilidade de se utilizar WxWindows com algumas linguagens interpretadas, como CLIPS, Python, Scheme, XLisp e Perl.

A Home Page do WxWindows: http://web.ukonline.co.uk/julian.smart/wxwin/


Para aqueles que querem conhecer outros toolkits disponíveis um bom começo pode ser esta lista mais extensa de toolkits, em: http://www.linuxlinks.com/Software/Programming/toolkits/
Outro link muito bom: "The GUI Toolkit, Framework Page" http://home.pacbell.net/atai/guitool/

Agradecimentos:

- a Marcelo de Gomensoro Malheiros <[email protected]> da Core Technologies, http://thecore.com.br , pela revisão prévia e valiosas sugestões e correções a este artigo.

- programa de manipulação gráfica poderosíssimo semelhante ao PhotoShop que terá em breve um artigo só seu aqui na revista: http://www.gimp.org.

- o Desktop GNOME também terá um artigo só seu na revista da Unicamp, após os artigos sobre Window Managers.

- em especial o desktop KDE, que terá também o seu artigo na revista em breve.

Comente de volta!