Introdução ao GTK com PHP
Friday, August 12, 2011 5:42:57 PM
Irei abrir a nova 'temporada' de posts com uma introdução sobre PHP GTK utilizando a ferramenta GLADE no linux, já que não existe nenhuma referência em português sobre o assunto.
O que você precisará ter:
GTK+
GLADE (http://glade.gnome.org/)
PHP + Apache {+ Mysql Opcional mas ja é bom ter tudo instalado }
Começando:
Em linhas gerais e simples o que vem a ser o GTK para o PHP?
ao meu ver, o GTK com o php é utilizado de um modo no qual o PHP, que é totalmente focado para web,browsers e servidores, como um sistema desktop como delphi,vb,java e outros.
Seu uso não é tao difundido, acredito eu que seja realmente por falta de literatura e exemplos sobre o assunto, pois o que eu aprendi de GTK com php foi fuçando e lendo artigos em ingles, além do livro do Pablo Dall'Oglio, porém, o livro dele é voltado ao GTK puro onde vc cria na 'unha' todos os componentes sem nada visual, o que é muito bom para aprender os comandos transportados do GTK.
Primeira visão do Glade

como podem ver o glade é mais uma ferramenta visual que irá nos auxiliar na criação de layouts para as nossas aplicações GTK e a interpretação desses arquivos do GLADE (.glade).
Criando um projeto simples
Para exemplificar o conceito do glade com PHP, iremos criar uma interface simples onde o usuário irá digitar 3 campos e salvar em um arquivo texto e recuperar os dados novamente.
faremos o arquivo glade visualmente da seguinte forma

O código da aplicação
<?php
class Salvar {
private $glade_file_buffer;
public $glade;
public $loginWindow;
private $empresa_selecionada = null;
public $oz_metodos_ecf;
/**
* Contrutor do Módulo de Login
*
* Responde por criar o objeto ModLogin na memória.
*/
public function __construct() {
$this->glade= new GladeXML('glade/salvar.glade');
$this->buildMod();
}
/**
* Contrutor da GUI do Modulo
*
* Responde por obter os Widgets do Glade e liga-los aos Metodos
*/
public function buildMod() {
$this->win = $this->glade->get_widget('main_win');
$this->win->connect('delete_event',array($this,'closeWin'));
/* Labels */
$this->eNome = $this->glade->get_widget('eNome');
$this->eEnd = $this->glade->get_widget('eEnd');
$this->eFone = $this->glade->get_widget('eFone');
/* Botoes */
$this->btnSalvar = $this->glade->get_widget('btnSalvar');
$this->btnSalvar->connect('clicked',array($this,'salvarDados'));
$this->btnRecarregar = $this->glade->get_widget('btnRecarregar');
$this->btnRecarregar->connect('clicked',array($this,'recarregarDados'));
$this->win->show_all();
gtk::main();
}
public function salvarDados(){
$nome = $this->eNome->get_text();
$endereco = $this->eEnd->get_text();
$fone = $this->eFone->get_text();
$string = $nome.'&'.$endereco.'&'.$fone;
file_put_contents('/tmp/salvo.txt',$string);
$this->eNome->set_text('');
$this->eEnd->set_text('');
$this->eFone->set_text('');
}
public function recarregarDados(){
$texto = file_get_contents('/tmp/salvo.txt');
$t = explode('&',$texto);
$this->eNome->set_text($t[0]);
$this->eEnd->set_text($t[1]);
$this->eFone->set_text($t[2]);
}
public function closeWin() {
gtk::main_quit();
}
}
new Salvar();
?>
Explicando o código:
Todo o arquivo que vai ser executado pelo GTK é criado uma classe para a mesma a fim de se caso for necessário executar por outras chamadas.
por padrão o __construct deve carregar o arquivo glade pela classe GladeXML que por sua vez interpretará o arquivo no PHP, além de um método que será responsável por ligar os componentes do glade com o php.
quando utilizamos o método $this->glade->get_widget estamos ligando o componente que selecionarmos no parâmetro fazendo com que o php tenha acesso as suas características, metodos e propriedades, por isso para facilitar é bem prudente colocar nomes padronizados em edits e botoes e não manter os padrões do GLADE, pois os nomes que ele cria são dificeis e genéricos.
Além do get_widget temos também $this->{componente}->connect.
Esse método faz o link de alguma ação do componente chamando um método escolhido pelo programador como callback de execução, como por exemplo ao clicar no botão utilizamos o evento clicked que por usa vez chama o método escolhido para executar a ação escolhida
Toda a aplicação deve ter o gtk::main() e o $this->win->show_all() para mostrar o sistema na tela.
Com esses simples métodos descritos nesse exemplo de salvar e recuperar os dados, ja é possível executar muitas outras aplicações.
Espero que tenham gostado e segue os arquivos compactados para estudo
artigoGlade.zip











