• Save
Criando aplicações com PHP-GTK
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Criando aplicações com PHP-GTK

on

  • 1,528 views

 

Statistics

Views

Total Views
1,528
Views on SlideShare
1,310
Embed Views
218

Actions

Likes
1
Downloads
0
Comments
0

5 Embeds 218

http://www.pablo.blog.br 132
http://dalloglio.home 29
http://pablo.blog.br 28
http://www.dalloglio.net 25
http://dalloglio.net 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Criando aplicações com PHP-GTK Presentation Transcript

  • 1. PHP-GTK2 Pablo Dall'Oglio Adianti Solutions www.adianti.com.br Pablo Dall'Oglio [pablo@php.net] PHP-GTK2
  • 2. Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 3. TalkLog ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● FISL - Porto Alegre, May 4, 2002; SICOMP - Univates, April 11, 2002; 1ª sem. Informática, Urcamp, May, 27, 2002; 2ª sem. Informática, Urcamp, October, 18, 2002; I SDSL, Unisinos, July, 17, 2003; Tríade Acadêmica, Feevale, Oct, 2003; Conf. SL Brasil, Curitiba, Nov, 6, 2003; UniInfo, Unisinos, Nov, 14 2003; II SDSL, Unicamp, Dec, 24, 2003; I SCSL, Brasília, April, 29, 2004; 5 FISL, Porto Alegre, June, 3, 2004; III SDSL, Univates, July, 20, 2004; Criciúma, SC, Aug, 14, 2004; UniInfo, Unisinos, Oct, 2004; Fórum do Gnome, Foz do Iguaçu, Nov, 2004; FURG, Rio Grande, Out, 2005; Fórum do Gnome, Curitiba, Nov, 2005; II Jornadas de Informática, Fac. Int. Itararé, Maio, 2006; PHP Conference Brasil, Novembro, 2006; PHP Road Show, Brasília, Maio, 2007; PHP Now, Petrópolis-RJ, Novembro, 2007; Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 4. O que é o PHP-GTK ? ● Agenda; ● Chat; ● Grafico (jpgraph); ● PhotoManager; ● Excel; ● Tulip; ● Agata; Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 5. História PHP 1,2,3 ▪ 1994 Rasmus Lerdorf (Personal Home Pages); ▪ Ferramenta para criar páginas dinâmicas; ▪ Voltada para web (comércio eletrônico, portais); PHP 4 ▪ Independência da Web; ▪ Scripts shell; ▪ PHP-GTK; PHP 5 ▪ Fortemente OO; ▪ Interfaces, visibilidade, membros estáticos, abstract, final; ▪ Object Clonning, objetos como referência; ▪ Construtores, Destrutores, Manipulação de erros; Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 6. Considerações • Extremamente fácil de utilizar; • Possivelmente a linguagem de script mais utilizada na web; • Vasta Bibliografia a respeito; • Muitas funções (arquivos, arrays, strings, XML, Imagens, ZIP, PDF, FTP, LDAP); • Postgres, Oracle, Mysql, Sql$erver, SQLite, Firebird, Sybase, Frontbase, Informix, ODBC, DBase, SapDB, Adabas, DB2... • Rápida, Flexível, não-rígida, tipagem dinâmica; • Permite tanto abordagem Procedural quanto OO; • A maioria de quem trabalha com PHP, não usa OO; Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 7. GTK Toolkit multi-plataforma para criar aplicações gráficas; Gtk+ foi desenvolvido para o GIMP, o GNU Image Manipulation Program. Gtk+ significa GIMP Tool Kit. O GTK+ tem crescido desde os primórdios 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 extensão do PHP, mantendo o PHP independente de plataforma e permitindo a criação de aplicações "janelizadas" em PHP para linux, BeOS e Windows. Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 8. Gimp Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 9. Gnome Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 10. Firefox Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 11. Evolution Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 12. Tudo Começou... • PHP-GTK é uma extensão do PHP; • Criado por Andrei Zmievski; • Nasceu como um experimento; • Desenvolvido no outono de 2000; • Primeira versão em Março de 2001; • 2006 => PHP-GTK2 (PHP5 com GTK2); Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 13. Sistema de Biblioteca Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 14. Web versus Client Aplicações Web • Dirigida à requisição de páginas; • Execução procedural; • Total integração com o servidor; Aplicações Cliente • Dirigidas à eventos; • O programador cria a interface, e esta aguarda por eventos ou sinais; • Tem acesso aos recursos da máquina cliente, além do servidor; Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 15. Reuso Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 16. Widgets • Widgets é uma palavra derivada de “Windows” + “Gadgets”. Um widget é um componente da interface gráfica com o qual o usuário pode interagir. Como uma caixa de texto, label, frame; Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 17. Instanciando Objetos <?php // criar janela $janela = new GtkWindow; // chamar método $janela­>set_title('Título da Janela'); // criar botão $botao = new GtkButton('Clique ME!'); // chamar método $janela­>add($botao); ?>  Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 18. 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. • • • • destroy row-activated activate pressed, released, clicked Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 19. Callbacks • São funções que são registradas pelo programador para reagir a sinais emitidos por widgets. $widget­>connect('signal','callback'); Exemplo: $button­>connect('clicked', 'alerta_usuario'); Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 20. Empacotamento • Construção da interface através de Containers: • GtkHBox, GtkVBox, GtkFrame, GtkNotebook; Exemplo: $janela = new GtkWindow; $hbox   = new GtkHBox; $janela­>add($hbox); $hbox­>pack_start(new GtkLabel('Código...:')); $hbox­>pack_start(new GtkEntry); Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 21. Posições Fixas Exemplo: $janela = new GtkWindow; $fixed  = new GtkFixed; $janela­>add($fixed); $label  = new GtkLabel('Código...:') $fixed­>put($label, 10, 20); Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 22. Exemplo <? function onClick() {     echo "Você clicou no botãon"; } function onExit() {     echo "Você fechou o programan";     Gtk::main_quit(); } $janela = new GtkWindow; $janela­>connect('destroy', 'onExit'); $botao = new GtkButton(' Click here ! '); $botao­>connect('clicked', 'onClick'); $janela­>add($botao); $janela­>show_all(); Gtk::main(); ?> Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 23. Glade O Glade é uma ferramenta para acelerar a construção da interface da aplicação, os projetos desenvolvidos nele são gravados no formato XML. Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 24. Glade <?php $glade = new GladeXML('exemplo.glade'); $botao = $glade­>get_widget('botao'); $entry = $glade­>get_widget('caixa_texto'); $botao­>connect('clicked', 'hello_world'); function hello_world() {     global $entry;     $entry­>set_text('Hello World'); } Gtk::Main(); ?>  Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 25. Text Markup <? $window = new GtkWindow; $window­>set_default_size(200,200); $vbox = new GtkVBox; $label = new GtkLabel(); $label­>set_markup('<b><i><u> negrito, italico e sublinhado</u></i></b>'); $vbox­>pack_start($label); $label = new GtkLabel(); $label­>set_markup('<span foreground="blue" background="gray"> <b>Texto: Azul fundo cinza</b></span>'); $vbox­>pack_start($label); //... $window­>add($vbox); $window­>show_all(); gtk::main(); ?> Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 26. Stock Items <? // cria nova janela $window = new GtkWindow; $window­>set_default_size(120,100); // cria caixa vertical $vbox = new GtkVBox; // cria botão a partir do estoque, usando // uma constante para representar... $button = GtkButton::new_from_stock(Gtk::STOCK_OK); $vbox­>pack_start($button); $button = GtkButton::new_from_stock(Gtk::STOCK_CANCEL); $vbox­>pack_start($button); $button = GtkButton::new_from_stock(Gtk::STOCK_FLOPPY); $vbox­>pack_start($button); // adiciona caixa vertical à janela e a exibe $window­>add($vbox); $window­>show_all(); gtk::main(); ?> Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 27. Diálogos <?php $dialog = new GtkMessageDialog(null, Gtk::DIALOG_MODAL,       Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO,       'Deseja continuar ?'); $response = $dialog­>run(); var_dump($response); if ($response == Gtk::RESPONSE_YES)     echo 'sim'; if ($response == Gtk::RESPONSE_DELETE_EVENT)     echo 'fechou'; $dialog­>destroy(); ?>  Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 28. TreeView Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 29. TreeView $list = new GtkTreeView; $model = new GtkListStore(Gtk::TYPE_STRING, Gtk::TYPE_STRING); $list­>set_model($model); $column1 = new GtkTreeViewColumn('Name'); $column2 = new GtkTreeViewColumn('Points'); $cell_renderer1 = new GtkCellRendererText(); $cell_renderer2 = new GtkCellRendererText(); $column1­>pack_start($cell_renderer1, true); $column2­>pack_start($cell_renderer2, true); $list­>append_column($column1); $list­>append_column($column2); $dados[] = array('Gustavo Kuerten','3258 pontos'); $dados[] = array('Andre Agassi',   '2986 pontos'); foreach ($dados as $jogador) {     $iter = $model­>append($jogador); } Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 30. TextView Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 31. Interface Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 32. SQLite • Embutido no PHP5; • Iniciado no ano de 2000 por Richard Hipp; • Banco de Dados composto por simples arquivos; • Subselect, triggers, transações, views, 2-3x mais rápido que MySQL, limite de 2 Terabytes, views são read-only, sem foreign keys; Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 33. SQLite <?php // Abre o BD (cria se não existir); $db = sqlite_open("cidades.db");  // Consultas $result = sqlite_query($db, "SELECT * from cidades");  // Retornando os dados while ($row = sqlite_fetch_array($result)) {     print_r($row);  } // Fecha a conexão sqlite_close($db); ?>  Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 34. SQLite <?php $janela = new GtkWindow; $vbox   = new GtkVBox; $label1 = new GtkLabel('Código'); $label2 = new GtkLabel('Nome'); $codigo = new GtkEntry; $nome   = new GtkEntry; $vbox­>pack_start($label1); $vbox­>pack_start($codigo); $vbox­>pack_start($label2); $vbox­>pack_start($nome); $botao = GtkButton::new_from_stock(GTK::STOCK_OK); $botao­>connect('clicked', 'onClick'); $vbox­>pack_start($botao); $janela­>add($vbox); $janela­>show_all(); Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 35. SQLite function onClick() {     global $codigo, $nome;     // obtém valores dos campos     $texto_codigo = $codigo­>get_text();     $texto_nome   = $nome­>get_text();     $db = sqlite_open("pessoas.db");     sqlite_query($db, "insert into pessoas (codigo, nome)                 values ('$texto_codigo', '$texto_nome')");     sqlite_close($db);     $codigo­>set_text('');     $nome­>set_text(''); } Gtk::Main(); ?>   Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 36. Adianti Studio G2 Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 37. Agata Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 38. Linux Stock Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 39. Referências Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 40. Obrigado! E-Mail pablo@php.net pablo@dalloglio.net URL http://www.php-gtk.com.br http://www.adianti.com.br http://www.pablo.blog.br Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =
  • 41. Creative Commons Estes slides estão disponíveis sob a licença não comercial da creative commons 1.0; • Você pode distribuir, copiar, exibir e realizar outros trabalhos seguindo estas condições: ▪ Atribuição: Você deve dar os créditos ao autor original; ▪ Não-Comercial: Você não pode utilizar este trabalho para propósitos comerciais; ▪ Não derivar trabalhos: Você não pode alterar, transformar, ou construir algo sobre este trabalho. ▪ Para todo reuso ou distribuição, você deve deixar explícito para os outros, os termos da licença deste trabalho; ▪ Estas condições podem ser alteradas se você obter permissão do autor; • O uso justo e outros direitos não são afetados pelas condições acima. • Pablo Dall'Oglio [pablo@php.net] PHP-GTK2 + =