Programação Especialista

Artigos de Programação em Geral

Introdução ao GTK com PHP

, , , , , ,

Depois de longos dois anos sem postar absolutamente nada no blog, resolvi voltar para tentar fazer posts periódicos afim de ajudar e esclarecer dúvidas de desenvolvedores.
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

Herança de classes no PHPComo utilizar complexTypes no nuSoap

Write a comment

New comments have been disabled for this post.