Você está na página 1de 7

Programando no Ubuntu Aplicaes grficas em C++ com Eclipse e Glade [primeira parte]

Por Pedro Arajo s | Categoria: Artigos, Dicas, Linux, Programao, Sistemas

Depois de muitas experincias no to bem sucedidas nesse processo de migrao, ou melhor, de conciliao do uso de Windows e Linux na mesma mquina, enfim encontrei uma alternativa que me agradou, e que tambm foi mais fcil, pro desenvolvimento de aplicaes desktop pro Linux. O site do Ubuntu BR traz vrias indicaes de ferramentas pro desenvolvimento de aplicaes, a maioria poderia pensar logo em Java, alguns at em .NET com o Mono, ambos que j tm algo mais concentrado, inclusive com IDEs prprias, mas o nosso objetivo aqui criar aplicaes mais nativas, digamos assim, por isso a opo escolhida foi o C++. A verso convencional do Ubuntu roda o ambiente grfico GNOME, e neste caso, a primeira opo recomendade pelo site do Ubuntu a IDE Anjuta, a qual eu cheguei a testar, porm no consegui evoluir nela, achei um tanto complicada e nada prtica. Por fim, o jeito foi recorrer aoEclipse, desta vez com um sucesso considervel. Ento, vamos passo a passo. 1 Instalao dos pacotes Pra qualquer opo que voc for escolher no desenvolvimento de aplicaes grficas pro Ubuntuvoc vai precisar dos pacotes pra desenvolvimento libgtkmm-2.4 e libglademm-2.4. J falei aqui no blog sobre a instalao de pacotes, como voc pode ver no post anterior. Pesquise estes pacotes noGerenciador de pacotes Synaptic e marque-os para instalao, que eu recomendo que seja total, conforme as imagens abaixo.

Voc tambm vai precisar do compilador GCC, que pode ser obtido pelo Synaptic buscando porbuildessential e instalando, mas isso tambm pode ser feito junto aps a instalao do Eclipse. Depois, pelo gerenciador Adicionar/Remover Aplicaes vamos fazer uma pesquisa na categoriaProgramao e marcar pra instalar o Devhelp, que a nossa refrerncia pro uso das APIs do GTK, e oGlade Interface Designer, que a ferramernta que usaremos pra desenhar as telas, j que neste modelo que abordamos a parte visual e o cdigo so separados.

No meu caso eu j tinha o Eclipse instalado, mas a instalao oferecida pelo gerenciador voltada pro Java, e como vamos programar em C++ precisamos do Eclipse CDT. Independente disso, mesmo, ou principalmente, que voc ainda no tenha o Eclipse, vamos ao Terminal pra instalar os ltimos pacotes necessrios. Podemos usar dois comandos, assim seguramente instalamos tudo o que falta: sudo apt-get install eclipse-cdt e sudo apt-get install libgtkmm-2.4-1c2a libgtkmm-2.4-dev build-essential Agora que temos tudo que precisamos vamos ao segundo passo, criando uma tela. 2 Criando telas Esse passo simples, e no velho esquema do arrastar e soltar que conhecemos. Lembre-se das instalaes acima, e agora vamos no menu Aplicativos Programao Construtor de Interfaces Glade. O programa no tem segredo, logo que abre ele j exibe uma janela de configurao pra tela que vamos criar, basicamente no mudamos nada. A nica coisa que temos que prestar a ateno em Formato do arquivo do projeto, que deve ser marcado a opo Libglade, pois o formato que usaremos.

Montar a tela no necessita de explicaes avanadas. Monte e salve no formato citado acima, com a

extenso .glade. Basicamente ele gera um arquivo XML com o layout da tela. O nosso exemplo de XML voc pode baixar aqui que j est tudo pronto para a prxima etapa, configurar o projeto no Eclipse e programar, o que eu vou abordar no prximo post.

Programando no Ubuntu Aplicaes grficas em C++ com Eclipse e Glade [segunda e ltima parte]
Por Pedro Arajo s | Categoria: Artigos, Dicas, Linux, Programao, Sistemas

No post anterior ns vimos como instalar os pacotes que precisamos e como montar as telas com o Glade. Agora vamos criar o projeto C++ e programar no Eclipse. Crie um novo projeto no Eclipse, selecionando a opo Managed Make C++ Project.

Siga pelo assistente, e ao chegar na tela abaixo, marque o tipo de projeto como Executable (GNU) e pode finalizar. No nosso exemplo aqui tambm s usaremos a configurao de Release pra gerar os executveis, s pra que nossa demonstrao seja mais compacta.

Com o projeto criado, vamos configur-lo associando as bibliotecas que precisamos do Glade e do GTK. Indo no menu Project Properties, ou pelo menu pop-up de atalho do Project Explorer, que leva ao mesmo lugar, nas propriedades para o nosso projeto, que no exemplo leva o nome deEclipseGtkmmDemo, na categoria C/C++, na aba Tool Settings, temos uma treeview e nela, no nGCC C++ Compiler, selecionamos Directories e na lista Include paths incluimos o/usr/include/tgkmm-2.4 e o /usr/include/libglademm-2.4.

No mesmo n, selecionamos Miscellaneous e alteramos o valor do campo Other flags para -c -fmessagelength=0 `pkg-config --cflags gtkmm-2.4` `pkg-config --cflags libglademm-2.4` (com crase mesmo, no aspa simples). Agora, vamos at o n GCC C++ Linker e tambm selecionamos o tem Miescellaneous dele, alterando o valor do campo Linker flags para `pkg-config --libs gtkmm-2.4` `pkg-config --libs libglademm2.4`, da mesma forma. Pronto, s aplicar e dar OK. Programando Sem nos apegarmos muito ao mrito da questo da linguagem C++, vamos criar dois arquivos. O primeiro nomeamos no exemplo como simple.h e nele fazemos os includes das bibliotecas do Glade e do GTK e tambm escrevemos as declaraes da nossa classe principal.

A extenso .h de header. O cdigo fonte desse nosso arquivo fica assim: #ifndef SIMPLE_H #define SIMPLE_H #include <gtkmm.h> #include <libglademm.h> class Aplicacao { //Declarao das variveis para os componentes visuais Gtk::Window *janelaPrincipal; Gtk::ComboBox *combo; Gtk::Label *etiqueta; Gtk::Button *botao; Gtk::MessageDialog *myMsg; public: //Mtodo construtor Aplicacao(); //Declaraes das funes associadas aos eventos dos componentes virtual void mudaTamanho(); virtual void Fechar(); }; #endif O nosso outro arquivo nomeamos como demo.cpp e nele escrevemos os cdigos pra rodar o programa, montar a tela a partir daquele XML gerado e progrmamos os eventos dos componentes. #include "simple.h" Aplicacao::Aplicacao() { //Carrega a interface a partir do arquivo glade Glib::RefPtr<Gnome::Glade::Xml> arvoreDeWidgets = Gnome::Glade::Xml::create("telas/winPrincipal.glade"); //Associa os widgets (componentes) s variaveis arvoreDeWidgets->get_widget("winPrincipal", Aplicacao::janelaPrincipal); arvoreDeWidgets->get_widget("lblSenha", Aplicacao::etiqueta); arvoreDeWidgets->get_widget("cmbPrincipal", Aplicacao::combo); arvoreDeWidgets->get_widget("btnSair", Aplicacao::botao); //Associa os sinais (eventos) dos componentes s funes que criamos Aplicacao::combo->signal_changed().connect(sigc::mem_fun(*this, &Aplicacao::mudaTamanho)); Aplicacao::botao->signal_clicked().connect(sigc::mem_fun(*this, &Aplicacao::Fechar)); //Define o valor padrao dentre os itens da combo Aplicacao::combo->set_active(0);

//Exibe toda interface Aplicacao::janelaPrincipal->show_all(); Gtk::Main::run(*janelaPrincipal); } void Aplicacao::Fechar() { //Fecha a aplicao Gtk::Main::quit(); } void Aplicacao::mudaTamanho() { //Muda texto do label conforme o tem selecionado da combo switch (this->combo->get_active_row_number()) { case 0: this->etiqueta->set_markup("<small>Texto tem 1.</small>"); break; case 1: this->etiqueta->set_markup("Texto tem 2."); break; case 2: this->etiqueta->set_markup("<big>Texto tem 3.</big>"); break; default: break; } } int main(int argc, char* argv[]) { //Inicia a aplicao Gtk::Main kit(argc, argv); Aplicacao aplicacao; return 0; } Como voc pode ver, o programa no tem uma determinada funcionalidade, apenas muda a aparncia do texto do nosso label. O objetivo mesmo mostrar como integrar as interfaces criadas com o Glade e o C+ +. Agora s compilar e clicar no play e o resultado este:

Para mais detalhes e a referncia completa do GTK, Libglade, etc, voc pode consultar oDevhelp, que instalamos conforme o post anterior. O resto, aprender C++. Fontes: http://www.cin.ufpe.br/~cinlug/wiki/index.php/Programando_com_GTKmm_no_Eclipse http://www.cin.ufpe.br/~cinlug/wiki/index.php/Mantendo_A_Sanidade_Com_O_Glade