Aplicações Standalone com PHP-GTK
Uma solução para aplicações gráficas standalone usando a eficiência do PHP
Até agora o grande uso que se deu à linguagem PHP
é aquele que você já conhece: uma linguagem de script,
cujos resultados visíveis para o usuário (até meados de
2001) ficavam em sua maioria restritos a um Web
Browser. Foi quando Andrei Zmievski resolveu criar uma
extensão desta linguagem, o PHP-GTK. Esta extensão
permite que você faça aplicações gráficas client-side e
independentes de plataforma. O PHP-GTK foi criado para
provar que o PHP é uma linguagem de grandes propósitos, além da fronteira de um browser. O PHP-GTK não
serve para exibir aplicações GTK em um browser, e sim
para construir aplicações gráficas standalone. Veja a seguir alguns termos comuns:
- Widget é um termo usado no mundo do X (o "modo
gráfico" do Linux e outros Unices) e serve para representar
uma caixa de texto, label, frame, window ou qualquer outro componente GUI (Graphical User Interface - Interface
Gráfica de Usuário). Os Widgets do GTK (Gnome Toolkit)
são todos derivados da base abstrata de classes GtkWidget
com seus métodos, sinais e propriedades.
- Signals são notificações (mensagens) emitidas por
widgets. Quando se programa Interfaces Gráficas (GUI),
geralmente é necessário responder a ações realizadas pelo
usuário ou iniciadas dentro do próprio programa. Quando um usuário clica em um botão, um sinal é emitido.
- Callbacks são funções que são registradas pelo programador para reagir a sinais emitidos por widgets.
Mãos à Obra
Para programar em PHP-GTK, é necessário instalar o
PHP e, logo em seguida, o PHP-GTK. Claro que o mais interessante é compilar junto um banco de dados como PostgreSQL
para trazer os resultados do Banco para interface gráfica. Lembre-se que o PHP-GTK por ser uma extensão, traz junto consigo a enorme gama de funções do PHP, como conexão a diversos Banco de Dados, manipulação de strings, etc.
Veja instruções detalhadas para instalação em:
gtk.php.net. Conteúdo original em inglês, mas que possui
boa parte já traduzida para o português.
Basicamente, um programa PHP-GTK carrega uma
biblioteca compilada com as diversas classes do GTK,
juntamente com métodos e propriedades, valendo-se
destes para construir a aplicação através de widgets (janelas, botões, ComboBoxes...) e sinais. Utilizamos o
PHP na linha de comando para rodar as aplicações
phpGTK. Exemplo: #php programa.php
Nosso primeiro código em phpGTK: Uma janela
que permite ao usuário digitar um
texto que será impresso na linha
de comando.
<?
// carrega biblioteca
if (strtoupper(substr(PHP_OS, 0, 3)) == `WIN')
dl(`php_gtk.dll');
else
dl(`php_gtk.so');
function ImprimeInput()
{ // é possível utilizar estrutura global
$input; // de classes p/ não usar global
echo `Digitou ` . $input->get_text() . "\n";
//imprime no shell
return;
}
$window = &new GtkWindow; // instância janela
$window->set_title(`Primeira Janela'); // título da
janela
$window->set_border_width(0); // borda da janela
$window->set_default_size(130, 60); // dimensões
$vbox = &new GtkVBox(); // monta caixa vertical
$vbox->show(); //exibe
$window->add($vbox); // adiciona caixa à janela
// instancia label
$texto = >new GtkLabel(`Teste Para revista do Linux');
$vbox->pack_start($texto); // joga label em caixa vert.
$texto->show(); // exibe label
$input = &new GtkEntry(); // cria input para ent. de dados
$vbox->pack_start($input); // joga input em caixa vert.
$input->show(); // exibe input
// cria botão
$button = &new GtkButton(`Imprime no shell');
$button->show();
// liga o sinal clicked à função ImprimeInput
$button->connect_object(`clicked', `ImprimeInput');
$vbox->pack_start($button); // joga botão na caixa vert.
$window->show(); // exibe a janela
Gtk::main(); // loop princpal do Gtk, aguarda
// por eventos causados pelo usuário
?>
Agata Report: uma aplicação PHP-GTK
O Agata Report é, além de um editor de
consultas SQL, um gerador de relatórios
PostScript e em modo Texto. É escrito
em PHP-GTK, orientado a objetos e usa
a Pear::DB uma classe abstrata para
conexão com diversos bancos de dados
homologada pelo próprio PHP group.
Portanto além de gráfico, o Agata
Report já nasce tendo uma gama de
bancos de dados grandes a explorar. Ele
se conecta ao banco, lista suas tabelas,
permite ao usuário criar ligações entre
elas, utilizar funções, ordenar por campos,
agrupar, criar restrições para este ou
aquele campo e, por fim, executar a
consulta.
A versão 2.0 também possui um editor de
consultas mescladas para documento. Você
escreve o documento, insere variáveis da
consulta SQL e mescla o resultado para
um documento PostScript (mala direta,
por exemplo), utilizando a PsLib.
Para saber mais