Feeds:
Posts
Comments

Archive for the ‘PHP-Gtk2’ Category

Nesse post irei mostrar como criar uma aplicação em PHP-GTK compilada usando o bcompiler no linux (ubuntu 8.04).  A fonte para o tutorial de instalação do bcompiler é o  artigo do Patrick Mendes no site do PHP-GTK Brasil.

Instalando o bcompiler no seu ubuntu 8.04

kirotawa@xxx:~$wget -c http://pecl.php.net/get/bcompiler-0.8.tgz
kirotawa@xxx:~$tar -xzvf bcompiler-0.8.tgz
kirotawa@xxx:~$cd bcompiler-0.8
kirotawa@xxx:~$phpize
kirotawa@xxx:~$./configure
kirotawa@xxx:~$make
kirotawa@xxx:~$make install
kirotawa@xxx:~$echo ‘extension=bcompiler.so’ >> /etc/php5/cli/php.ini

Lembre-se de um detalhe o comando make install deve ser realizado como root.  Para não haver nenhum problema faça tudo como root, só pra garantir.

Agora que você instalou o bcompiler é hora de usar ele.  Antes vamos criar uma aplicação simples em PHP-GTK.

CODE

<?php

  $janela = new GtkWindow();
  $janela->set_default_size(100,50);
  $janela->set_title("Janela Compilada");
  $Label = new GtkLabel("Nome");
  $Nome = new GtkEntry();
  $Botao = new GtkButton("_OK",true);
  $box = new GtkHbox();

  $box->add($Label);
  $box->add($Nome);
  $box->add($Botao);
  $janela->add($box);

  $Botao->connect_simple('clicked','fExibeTexto',$Nome );

  $janela->show_all();
  $janela->connect_simple('destroy', array('gtk', 'main_quit'));
  function fExibeTexto($campotexto)
  {
    $texto = $campotexto-> get_text();
    $dialog = new GtkMessageDialog(null, Gtk::DIALOG_MODAL,
    gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, $texto );
    $dialog->run();
    $dialog->destroy();
  }

   Gtk::main();
?>

O código acima é só pra explicar. O que ele faz é criar uma janela com um GtkLabel, GtkButton e um GtkEntry. Quando o botão é pressionado abre-se um GtkMessageDialog com o conteudo do GtkEntry.
Agora vamos a parte que realmente interessa. Criar a tal  aplicação compilada.  Criamos um arquivo com o seguinte contéudo:

CODE

<?php
     $arq = fopen("janela.phb", "w");//Cria o arquivo que conterá  o bytecode
     bcompiler_write_header($arq); //Escreve a parte do cabeçalho do arquivo bcompiler.
     bcompiler_write_file($arq, "teste1.php"); //Essa função lê o arquivo que você quer gera o     bytecode e escreve no arquivo recem criado
     bcompiler_write_footer($arq); //Escreve o caracter \x00 para indicar o Fim dos dados compilados.
     fclose($arq); //Fecha o arquivo
?>

Agora que temos o códio para nossa aplicação, e temos o código que vai gerar a aplicação compilada. é só digitar:

kirotawa@xxx:~$php bcompilerteste.php

Ele vai gerar o arquivo janela.phb. Para executar essa janela você pode digitar:

kirotawa@xxx:~$php janela.phb

Ou fazer o que eu fiz setar que os arquivos .phb devem ser abertos com o php. Pronto agora você pode proteger as suas aplicações em PHP-GTK.  Para saber mais dá uma conferida nas referências abaixo.

Referências

Artigo do Patrick Mendes
Wbly/Emilio
XoopsCube

Read Full Post »

Três vezes GTK

Há muito tempo atrás quando mal conhecia o que eram GUI’s, comecei a estudar algo chamado Tk, mas precisamente Tcl/Tk. Comecei a estudar esta linguagem quando vi que o aMSN era todo feito nela. Minha ambição era criar um aMSN ou melhora-lo (hehe), mas infelizmente faculdade rouba nosso tempo, tempo no qual poderia-mos está aprendendo sozinho, mas temos que tirar a nota X pra poder passar, etc. Mas o que raios esse papo tem haver com GTk? Acho que nada, foi só pra introduzir o artigo (hehe), mas espere! Tem sim haver, estamos falando de GUIS, e assim como Tk GTK é uma Biblioteca para criar aplicações gráficas. Ao contrário do que aconteceu com meus estudos em Tcl/Tk, com relação a GTK eu fui adiante e hoje estudo três linguagens diferentes que fazem uso desta mesma biblioteca, dai vem o título deste artigo e também o assunto do mesmo.

Neste artigo pretendo apresentar a todos a biblioteca GTK usada no gnome das distribuições linux. Também pretendo mostrar três linguagens que fazem uso desta biblioteca, e deixar que você escolha a mais poderosa, a mais fácil ou a que você sabe, para que você crie suas aplicações gráficas utilizando GTK.

Antes de falar dessas três linguagens vamos dá uma olhada no histórico da biblioteca GTK.

GTK quer dizer Gnome tool kit, e é usado inteiramente no gnome. Um dos aplicativos gráficos mais famosos do mundo open source, o gimp, possui sua parte gráfica toda feita em GTK. Além de ser fácil de aprender, esta biblioteca é muiltiplataforma, logo você vai poder criar aplicações unix ou win32. Mas como criar tais aplicações e quais as três linguagens que você disse que fazem uso da GTK? São elas PHP-GTK2, C e Python, isso claro sem citar tantas outras que também fazem uso da GTK.

Agora é a hora da verdade, vou mostrar três exemplos de codigos diferentes nestas três linguages e vocês escolhem em qual delas deseja começar a programar usando GTK.

Em C

#include <gtk/gtk.h>

static void destroy( GtkWidget *widget,
                     gpointer   data );

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window ,*label;

    gtk_init (&argc, &argv);
    //Cria a janela e a ponhe no topo
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    //Da um tamanho a janela
    gtk_window_set_default_size(GTK_WINDOW (window),300,200);
    //Da um titulo a janela
    gtk_window_set_title(GTK_WINDOW (window),"Ola mundo");

    //Cria o label com a frase Ola mundo :P!
    label = gtk_label_new("Ola Mundo :P!");
    //Adiciona o label a janela
    gtk_container_add(GTK_CONTAINER (window), label);
    //Adiciona a funcao destroy para fechar a janela
    g_signal_connect (G_OBJECT (window), "destroy",
		      G_CALLBACK (destroy), NULL);

    //Diz pra mostrar todos os widgets da janela
    gtk_widget_show_all (window);
    //loop do gtk
    gtk_main ();

    return 0;
}
//Funcao pra quando clicar no x da janela ela fechar
static void destroy( GtkWidget *widget,
                     gpointer   data )
{
    gtk_main_quit ();
}

Achou em C complicado? Então que tal em PHP-Gtk2.

PHP-Gtk2

<?php

$wnd = new GtkWindow();
$wnd->set_title('Olá mundo');
$wnd->set_size_request(300,200);
$wnd->connect_simple('destroy', array('gtk', 'main_quit'));

$label_ola= new GtkLabel("Olá Mundo :P!'");
$wnd->add($label_ola);

$wnd->show_all();
Gtk::main();
?>

Se ainda assim você achou difícil ou não gostou de PHP-Gtk2, então tenta ai no python.

Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
pygtk.require( '2.0' )
import gtk

def main():
	window = gtk.Window(gtk.WINDOW_TOPLEVEL)
	window.set_title( "Ola Mundo" )
	window.set_size_request(300,200)
	window.connect('destroy',gtk.main_quit)

	label = gtk.Label(' Ola Mundo :P!' )
	window.add(label)

	window.show_all()

	gtk.main()

if __name__ == '__main__':
	main()

E ai está os três códigos fazem a mesma coisa, mostram uma janela com um label dizendo “ola mundo”. Agora se você não conhece nenhuma dessas linguagens ou não gosta delas há outras opções para você, eis a lista de linguagens que fazem uso da Gtk:

C++  	gtkmm
C# 	Gtk#
Java 	java-gnome
Python 	PyGTK
Perl 	gtk2-perl
R 	RGtk2
Guile 	guile-gnome
Ruby 	Ruby-GNOME2
PHP 	PHP-GTK
Ada 	GtkAda
OCaml 	LablGTK
Haskell Gtk2Hs
Lua 	lua-gtk
S-Lang 	SLgtk 	      

Viu quantas possibilidades você tem. Até aquela linguagem verborratica e chata que começa com J usa o Gtk. E além disso você pode usar o Glade que é uma ferramenta onde você pode construir sua interface gráfica sem digitar código, apenas fazendo uso do projeto que o Glade gera e utilizando um parser. Mas essa historia fica para uma próxima oportunidade. A quem desejar aprender mais sobre Gtk, dêem uma olhada nas referências ou se liguem aqui no Core Code que em breve vou criar um tutorial de C gtk, pygtk e claro php-gtk2 com o uso do glade e sem o uso do glade.

Referências

http://www.gtk.org/

http://library.gnome.org/devel/gtk-tutorial/stable/c24.html

www.php-gtk.com.br

gtk.php.net

www.kksou.com/

www.pygtk.org/

Read Full Post »