gtkmm

gtkmm é um wrapper em C++ para GTK+, uma biblioteca usada para criar interfaces gráficas para usuário. Sua licença é a LGPL, então você pode desenvolver software aberto, software livre ou mesmo softwares comerciais não livres usando gtkmm sem comprar licenças.

gtkmm foi originalmente denominado como gtk-- porque GTK+ já tem um sinal + no nome. Entretanto, como -- não é facilmente indexado por mecanismos de busca, o pacote geralmente ficava com o nome gtkmm, e é por isso que o adotamos por fim.

1.2.1. Por que usar gtkmm em vez de GTK+?

gtkmm permite escrever código usando as técnicas normais de C++ como encapsulamento, derivação e polimorfismo. Como um programador de C++, você já deve perceber que isso leva a um código mais limpo e melhor organizado.

O gtkmm tem melhor segurança quanto à tipagem, assim o compilador pode detectar erros que só seriam percebidos em tempo de execução ao usar C. Esse uso de tipos específicos também torna a API mais clara, porque você pode ver que tipos deveriam ser usados apenas olhando a declaração de um método.

Herança pode ser usada para derivar novos widgets. A derivação de novos widgets em código GTK+ em C é tão complicada e propensa a erros que quase nenhum programador C a faz. Sendo um desenvolvedor C++, você sabe que derivação é uma técnica essencial em orientação a objetos.

Instâncias membros podem ser usadas, simplificando o gerenciamento de memória. Todos widgets GTK+ C são tratados pelo uso de ponteiros. Como um programador em C++ você sabe que os ponteiros devem ser evitados sempre que possível.

gtkmm envolve menos código comparado ao GTK+, que usa nomes de funções com prefixos e muitas macros de conversão.

1.2.2. gtkmm comparado ao Qt

O Qt da Trolltech é o competidor mais próximo do gtkmm, então merece uma discussão.

gtkmm developers tend to prefer gtkmm to Qt because gtkmm does things in a more C++ way. Qt originates from a time when C++ and the standard library were not standardised or well supported by compilers. It therefore duplicates a lot of stuff that is now in the standard library, such as containers and type information. Most significantly, Trolltech modified the C++ language to provide signals, so that Qt classes cannot be used easily with non-Qt classes. gtkmm was able to use standard C++ to provide signals without changing the C++ language. See the FAQ for more detailed differences.

1.2.3. gtkmm é um wrapper

gtkmm não é uma ferramenta nativamente em C++, mas um wrapper em C++ para uma ferramenta em C. Essa separação entre interface e implementação tem vantagens. Os desenvolvedores do gtkmm gastam a maior parte do tempo conversando sobre como o gtkmm pode apresentar uma API mais clara, sem se bagunçar devido a detalhes técnicos obscuros. Nós contribuímos um pouco na base do código do GTK+, mas também contribuem os programadores em C, em Perl, em Python, etc. Portanto, o GTK+ se beneficia de uma base de usuários mais ampla do que as de kits de ferramentas de uma linguagem em específico - há mais pessoas que implementam, mais desenvolvedores, mais testadores e mais usuários.