8
Criando uma calculadora com o Glade Autor: Iuri Cernov <icernov at yahoo.com.br> Data: 15/03/2005 Introdução Neste artigo vou mostrar como se faz uma calculadora com o Glade. Será uma calculadora simples, mas poderá dar uma introdução à quem quer programar em GTK+. Os programas necessários são: Glade 2.0 GTK+ 2.0 gcc 3.3.3 (não testei com outras versões) Apresentando o Glade O Glade é um programa usado para criar interfaces gráficas para os programas feitos em GTK+. Ele funciona da seguinte forma: primeiro se cria a interface do programa, depois gera o código e então termina programando as ações dos botões, etc. Geralmente nas distribuições mais completas, o Glade já vem junto, mas caso não venha, você pode baixar em http://www.glade.org. A aparência dele é assim:

Criando Uma Calculadora Com o Glade

  • Upload
    brven

  • View
    234

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Criando Uma Calculadora Com o Glade

Criando uma calculadora com o Glade

Autor: Iuri Cernov <icernov at yahoo.com.br>

Data: 15/03/2005

Introdução

Neste artigo vou mostrar como se faz uma calculadora com o Glade. Será uma calculadora

simples, mas poderá dar uma introdução à quem quer programar em GTK+.

Os programas necessários são:

Glade 2.0 GTK+ 2.0 gcc 3.3.3 (não testei com outras versões)

Apresentando o Glade

O Glade é um programa usado para criar interfaces gráficas para os programas feitos em

GTK+. Ele funciona da seguinte forma: primeiro se cria a interface do programa, depois gera o

código e então termina programando as ações dos botões, etc.

Geralmente nas distribuições mais completas, o Glade já vem junto, mas caso não venha,

você pode baixar em http://www.glade.org.

A aparência dele é assim:

Page 2: Criando Uma Calculadora Com o Glade

Tente criar algumas interfaces com ele e quando estiver bem familiarizado passe para a

próxima página...

Criando a interface do nosso programa

Nossa calculadora será bem simples e funcionará da seguinte forma: coloca-se um número no

primeiro campo, outro número no segundo campo e depois escolhe a operação que quer

fazer (somar, multiplicar etc). O resultado aparecerá no primeiro campo e o segundo campo

ficará vazio.

Ok, então vamos começar!

Primeiro crie um projeto novo:

Clique em "Novo"; Escolha "Novo projeto GTK+".

Depois crie uma janela:

Clique em "Janela" na paleta.

Na janela "Propriedades", coloque:

Nome: calculadora (em minúsculo mesmo); título: Calculadora - Por (Seu nome aqui!);

Na aba "Comum" da janela "Propriedades", coloque:

Largura: 250 Altura: 255

Na aba "Sinais" da janela "Propriedades", coloque:

Page 3: Criando Uma Calculadora Com o Glade

Sinal: destroy Manipulador: gtk_main_quit

Clique em "Adicionar".

Essa última ação é pra quando clicar no "Xizinho" da janela ela fechar.

Agora clique em "Posições fixas" da Paleta (a que tem um quadrado grande com três

quadradinhos espalhados) e clique na janela depois. Não será preciso mudar nada nas

propriedades.

Salve o projeto em ~/calculadora.

Crie então a seguinte interface o mais parecido possível:

E então mude as propriedades de cada um:

ATENÇÃO: Respeite as maiúsculas e minúsculas!!!

-- entry1

- Widget

- Nome: enPrimeiro

- Comum

- Largura: 112

- Altura: 24

- Dica de ferramenta: Digita um número aí

-- entry2

- Widget

- Nome: enSegundo

- Comum

- Largura: 112

Page 4: Criando Uma Calculadora Com o Glade

- Altura: 24

- Dica de ferramenta: Digita outro aí

-- button1

- Widget

- Nome: btMais

- Etiqueta: _Somar

- Comum

- Largura: 128

- Altura: 26

- Sinais

- Clique em "..."

- Escolha "clicked"

- Clique em "Adicionar"

-- button2

- Widget

- Nome: btMenos

- Etiqueta: S_ubtrair

- Comum

(mesmo de button1)

- Sinais

(mesmo de button1)

-- button3

- Widget

- Nome: btVezes

- Etiqueta: _Multiplicar

- Comum

(mesmo de button1)

- Sinais

(mesmo de button1)

-- button4

- Widget

- Nome: btDiv

- Etiqueta: _Dividir

- Comum

(mesmo de button1)

- Sinais

(mesmo de button1)

-- button5

- Widget

- Nome: btSair

- Etiqueta: Sai_r

- Icone: Sair

- Comum

(mesmo de button1)

- Sinais

- Digite "clicked" em Sinal

- Em Manipulador digite "gtk_main_quit"

- Clique em "Adicionar"

Ok, finalmente terminamos! Vamos agora criar o código fonte:

Salve o projeto; Clique em "Construir" na janela "Glade: calculadora"; Aparecerá na barra de status: "código fonte gravado".

Vamos agora para a próxima parte...

Page 5: Criando Uma Calculadora Com o Glade

Analisando o código-fonte

Agora a interface do nosso programa está criada. Vamos ver na pasta ~/calculadora. Existe

um monte de arquivos e dois diretórios, po/ e src/. Entre então no diretório "src" e verá 8

arquivos:

interface.c interface.h callbacks.c callbacks.h main.c Makefile.am support.c support.h

O arquivo Makefile.am não será necessário nesse projeto. Pode apagar ele se quiser.

Os arquivos interface.[ch] são para definir a interface do programa.

Os arquivos callbacks.[ch] são as funções dos botões. Muito importante!

O arquivo main.c é a entrada do programa, ou seja, aonde o programa vai começar.

Os arquivos support.[ch] define algumas coisas do Glade. Não mexa!

Abra o arquivo main.c e procure uma linha igual à esta (em torno da 29):

add_pixmap_directory(PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");

Então comente ela. Para comentar basta colocar um "//" no começo dela:

// add_pixmap_directory(PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");

Agora vamos colocar o código-fonte do nosso programa.

Criando as funções do programa

Estamos prontos então para fazer o código-fonte do nosso programa. Abra o arquivo

callbacks.c com seu editor preferido (eu uso o Emacs) e adicione as seguintes linhas:

#ifdef HAVE_CONFIG_H

# include <config.h>

#endif

Page 6: Criando Uma Calculadora Com o Glade

#include <gtk/gtk.h>

#include "callbacks.h"

#include "interface.h"

#include "support.h"

void on_btDiv_clicked (GtkButton *button, gpointer user_data)

{

GtkWidget

*calc, // A janela

*prim, // O campo "enPrimeiro"

*seg; // e o campo "enSegundo"

int n1, n2; // n1 e n2: primeiro e segundo numero

char n3[30]; // resultado em formato string

calc = gtk_widget_get_toplevel(GTK_WIDGET(button));

prim = lookup_widget(calc, "enPrimeiro");

seg = lookup_widget(calc, "enSegundo");

n1 = atoi(gtk_entry_get_text(GTK_ENTRY(prim)));

n2 = atoi(gtk_entry_get_text(GTK_ENTRY(seg)));

if (n2 == 0) return; // Não dividir por 0...

sprintf(n3, "%d", n1 / n2); /* Essa é a única parte que vai *

* mudar nas outras funções */

gtk_entry_set_text(GTK_ENTRY(prim), n3);

gtk_entry_set_text(GTK_ENTRY(seg), "");

}

void on_btVezes_clicked (GtkButton *button, gpointer user_data)

{

GtkWidget

*calc,

*prim,

*seg;

int n1, n2;

char n3[30];

calc = gtk_widget_get_toplevel(GTK_WIDGET(button));

prim = lookup_widget(calc, "enPrimeiro");

seg = lookup_widget(calc, "enSegundo");

n1 = atoi(gtk_entry_get_text(GTK_ENTRY(prim)));

n2 = atoi(gtk_entry_get_text(GTK_ENTRY(seg)));

sprintf(n3, "%d", n1 * n2);

gtk_entry_set_text(GTK_ENTRY(prim), n3);

gtk_entry_set_text(GTK_ENTRY(seg), "");

Page 7: Criando Uma Calculadora Com o Glade

}

void on_btMenos_clicked (GtkButton *button, gpointer user_data)

{

GtkWidget

*calc,

*prim,

*seg;

int n1, n2;

char n3[30];

calc = gtk_widget_get_toplevel(GTK_WIDGET(button));

prim = lookup_widget(calc, "enPrimeiro");

seg = lookup_widget(calc, "enSegundo");

n1 = atoi(gtk_entry_get_text(GTK_ENTRY(prim)));

n2 = atoi(gtk_entry_get_text(GTK_ENTRY(seg)));

sprintf(n3, "%d", n1 - n2);

gtk_entry_set_text(GTK_ENTRY(prim), n3);

gtk_entry_set_text(GTK_ENTRY(seg), "");

}

void on_btMais_clicked (GtkButton *button, gpointer user_data)

{

GtkWidget

*calc,

*prim,

*seg;

int n1, n2;

char n3[30];

calc = gtk_widget_get_toplevel(GTK_WIDGET(button));

prim = lookup_widget(calc, "enPrimeiro");

seg = lookup_widget(calc, "enSegundo");

n1 = atoi(gtk_entry_get_text(GTK_ENTRY(prim)));

n2 = atoi(gtk_entry_get_text(GTK_ENTRY(seg)));

sprintf(n3, "%d", n1 + n2);

gtk_entry_set_text(GTK_ENTRY(prim), n3);

gtk_entry_set_text(GTK_ENTRY(seg), "");

}

Demorou mas terminamos. Salve o arquivo e feche seu editor.

Page 8: Criando Uma Calculadora Com o Glade

Compilando e rodando o programa

Bom, temos o código fonte, só falta o programa em si. Para compilar o programa digite:

$ gcc $(pkg-config --libs --cflags gtk+-2.0) callbacks.c interface.c support.c main.c

O $(pkg-config --libs --cflags gtk+-2.0) tem o mesmo efeito de `pkg-config --libs --cflags gtk+-

2.0` para quem não sabe.

Então teremos um arquivo novo chamado a.out. É o seu programa! Vamos ver ele rodando

então:

$ ./a.out

Conclusão

Pareceu difícil? Realmente não é muito fácil não, mas com um pouco de prática montar um

programa com o Glade vai se tornando fácil e legal.

Para programar em GTK você pode baixar as documentações e os tutoriais em

http://www.gtk.org.