Você está na página 1de 37

PHP-GTK

Criando Aplicaes Grficas com PHP gtk.php.net

Jamiel Spezia Solis Cooperativa de Solues Livres

Crditos: Pablo Dall'Ogllio

<jamiel@solis.coop.br>

<jamiel@solis.coop.br> www.solis.coop.br

O incio de tudo...

Desenvolvimento Outono de 2000 1st release Maro 01, 2001

<jamiel@solis.coop.br>

Histrico

PHP a melhor linguagem de script; PHP interpretado, mas pode ser gerado um byte-code tambm; Independente de Plataforma (Cross platform); Rica em funes e extenses; usada na Web e na linha de comando tb :) Grande quantidade de referncias a respeito;
<jamiel@solis.coop.br>

Motivao

Aproveitar a popularidade e as funcionalidades do PHP; Oferecer um novo modo de desenvolver aplicaes; Fazer tudo que voc no consegue em uma pgina web;

<jamiel@solis.coop.br>

A Histrio do Gtk+
GTK+
Toolkit multi-plataforma para criar aplicaes grficas; Gtk+ foi desenvolvido para o GIMP, o GNU Image Manipulation Program. Gtk+ significa GIMP Tool Kit. O GTK+ tem crescido desde os primrdios e agora usado como parte central do Gnome, o ambiente desktop GNU . Gtk+ tem sido portado para o BeOS e Win32, fazendo-se a escolha perfeita para ser usado como base para uma extenso do PHP, mantendo o PHP independente de plataforma e permitindo a criao de aplicaes "janelizadas" em PHP para linux, BeOS e Windows.

<jamiel@solis.coop.br>

GIMP (GTK=Gimp Tool Kit)

<jamiel@solis.coop.br>

GNOME : C/GTK

<jamiel@solis.coop.br>

Aplicaes Web

Dirigida requisio de pginas; Execuo procedural; Total integrao com o servidor;

Aplicaes client-side

Dirigidas eventos; O programador cria a interface, e esta aguarda por eventos ou sinais; Tem acesso aos recursos da mquina cliente, alm do servidor;

<jamiel@solis.coop.br>

PHP-GTK uma biblioteca


<? if(strtoupper(substr(PHP_OS,0,3)=='WIN')) { dl('php_gtk.dll'); } else { dl('php_gtk.so'); } ?>

<jamiel@solis.coop.br>

<jamiel@solis.coop.br>

Widgets

um termo usado no mundo do X (o "modo grfico" 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 Grfica de Usurio). Os Widgets do GTK (Gnome Toolkit) so todos derivados da base abstrata de classes GtkWidget com seus mtodos, sinais e propriedades. Window, Button, clist, label, comboBox, Hbox, Vbox, Frame, CTree

<jamiel@solis.coop.br>

<?

Instanciando Objetos

// Criando um janela $window=newGtkWindow(); // Criando um boto $button=newGtkButton('Abrir Arquivo'); // Criando um rtulo de texto $label = newGtkLabel('Cdigo da pessoa'); ?>

<jamiel@solis.coop.br>

Signals

So notificaes (mensagens) emitidas por widgets. Quando se programa Interfaces Grficas (GUI) geralmente necessrio responder a aes realizadas pelo usurio ou iniciadas dentro do prprio programa. Quando um usurio clica em um boto, um sinal emitido. Clicked, row-select, delete-event, button_press_event, tree-select-row

<jamiel@solis.coop.br>

CallBacks

So funes que so registradas pelo programador para reagir a sinais emitidos por widgets.
$widget->connect("signal","callback"); $button->connect( clicked , alerta_usuario );

Exemplo:

<jamiel@solis.coop.br>

Empacotamento

Containers GtkWindow, GtkHbox, GtkVbox, GtkFrame, GtkTable

Particionar a Janela pelo uso de Containers; Um Container pode conter outro Container;
$window->add($frame); $hbox->pack_start($botao1); $hbox->pack_start($botao2); $hbox->pack_start($botao3);

<jamiel@solis.coop.br>

Posies Fixas

<jamiel@solis.coop.br>

<?php functionprimeira() { print"Primeira funo chamada \n"; } functionsegunda() { print"Segunda funo chamada \n"; } $window=&newGtkWindow(); $button=&newGtkButton("Click Me!!"); $button->connect("clicked","primeira"); $button->connect("clicked","segunda"); $window->add($button); $window->show_all(); gtk::main(); ?>

<jamiel@solis.coop.br>

Glade
Construir uma interface complexa para alguns, algo tedioso. Felizmente, algum j desenvolveu uma soluo. Use o Glade e salve o desenho da aplicao em formato .glade. Carregue o .glade no PHP-GTK usando GladeXML: <?php $glade=&newGladeXML('exemplo.glade'); gtk::main(); ?>

<jamiel@solis.coop.br>

Exemplo Glade

<?php if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { dl('php_gtk.dll'); } else { dl('php_gtk.so'); } $glade=&new GladeXML('exemplo.glade'); $button = $glade->get_widget("button1"); $clist = $glade->get_widget("clist1"); $button->connect_object('clicked', 'onClick', $clist); function onClick($clist) { $clist->append(array('coluna 1','coluna 2','coluna 3')); return true; } gtk::main(); ?>

<jamiel@solis.coop.br>

Conectando Bd 1

<? if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') { dl('php_gtk.dll'); } else { dl('php_gtk.so'); } $janela = new GtkWindow; $janela->set_usize(300, 500); $janela->set_position(GTK_WIN_POS_CENTER); $janela->show(); $lista = new Gtkclist(2, array('codigo', 'nome')); $lista->show(); $janela->add($lista); $user = 'master'; $pass= 'abacaxi'; $database = 'sagu'; $host = '192.168.0.54'; $db = mysql_connect($host, $user, $pass); mysql_select_db($database, $db);

<jamiel@solis.coop.br>

$sql = "select codigo, nome from pessoas";

Conectando Bd 2

$result = mysql_query($sql, $db); while ($line = mysql_fetch_array($result)) { $codigo = trim($line[0]); $nome = trim($line[1]); $lista->append(array($codigo, $nome)); } mysql_free_result($result); mysql_close($db); Gtk::main(); ?>

<jamiel@solis.coop.br>

<jamiel@solis.coop.br>

GTK Test Sample Tour


Gtk test sample: Arquivo que acompanha a instalao. Possui exemplos das funcionalidades mais importantes do PHPGTK.

<jamiel@solis.coop.br>

Exemplos de Aplicaes

<jamiel@solis.coop.br>

GNUTeca

<jamiel@solis.coop.br>

Agata Report

<jamiel@solis.coop.br>

<jamiel@solis.coop.br>

Tulip

<jamiel@solis.coop.br>

PHPArchitect

<jamiel@solis.coop.br>

<jamiel@solis.coop.br>

Temas

Gtk::rc_parse('/Aqua/gtk/gtkrc');

<jamiel@solis.coop.br>

www.php-gtk.org.br

<jamiel@solis.coop.br>

Livro
Onde encontrar:

www.novateceditora.com.br www.temporeal.com.br www.linuxmall.com.br

<jamiel@solis.coop.br>

O Futuro PHP-GTK2

PHP5, Zend Engine 2;

Reconstruo do modelo de objetos; Novos Widgets;

GTK2;

<jamiel@solis.coop.br>

Creative Commons

Est es slides esto disponveis sob a licena no com ercial da creat ive commons 1.0; Voc pode dist ribuir, copiar, ex ibir e realizar outros t rabalhos seguindo estas condies:

Atribuio: Voc deve dar os crdit os ao aut or original; No- Comercial: Voc no pode utilizar este t rabalho para propsitos comerciais; No derivar trabalhos: Voc no pode alt erar, t ransformar, ou construir algo sobre est e t rabalho. Para t odo reuso ou dist ribuio, voc deve deix ar ex plcito para os out ros, os termos da licena dest e t rabalho; Est as condies podem ser alteradas se voc obter permisso do autor;

O uso justo e out ros direit os no so afetados pelas condies acima.

<jamiel@solis.coop.br>

Referncias
PHP-GTK
http://gtk.php.net

PHP-GTK-Brasil
www.php-gtk.org.br

GNUTeca
http://www.gnuteca.org.br

Agata Report
www.agata.org.br

Tulip
http://tulip.solis.coop.br

Solis
www.solis.coop.br

HomePage
http://www.varianet.com.br
<jamiel@solis.coop.br>

Você também pode gostar