Forum und email

Alô Mundo (basico)

Quando você começa a aprender uma linguagem de programação, o primeiro programa que você escreve normalmente é um programa "alô mundo". Assim, apenas para acompanhar todos os outros, o primeiro tutorial neste manual acontece de ser um tutorial "alô mundo"!

Através dos tutoriais nós esperamos que você tenha um conhecimento razoável do PHP em sí. Os tutoriais são criados para dar ao usuário uma idéia de como usar o PHP-GTK, e das tecnicas por de trás dele.

Neste tutorial nós vamos criar uma simples janela com o texto "Alô Mundo!" nela.

Nós vamos começar listando o programa iremos explicar cada linha do programa, dando um idéia de uma aplicação PHP-GTK muito básica.

Exemplo 2.1. Um script simples Alo Mundo

<?php
if (!class_exists('gtk')) {
    die("Please load the php-gtk2 module in your php.ini\r\n");
}

$wnd = new GtkWindow();
$wnd->set_title('Hello world');
$wnd->connect_simple('destroy', array('gtk', 'main_quit'));

$lblHello = new GtkLabel("Just wanted to say\r\n'Hello world!'");
$wnd->add($lblHello);

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

Agora copie o código em um editor de texto e salve-o como hello.phpw. Então abra um console e inicie-o via php hello.phpw. Uma janela com o titulo "Hello world" deve abrir e não contém nada alem do texto "Just wanted to say 'Hello world!'".

Exemplo 2.2. Conferindo se o PHP-GTK esta disponível

if (!class_exists('gtk')) {
    die("Please load the php-gtk2 module in your php.ini\r\n");
}

Aqui nos vamos ter certesa que o PHP_GTK esta disponível conferindo se a classe gtk existe. Diferentemente do PHP 4 e PHP-GTK 1, você não deve tentar carregar o modulo PHP-GTK usando dl(). Isto esta obsoleto no PHP 5, e não deve ser usado em código recem escrito. Assim tudo o que nós podemos fazer é mostrar uma mensagem, este módulo não esta ativado e deve ser ativado pelo usuário.

Exemplo 2.3. Criar uma janela

$wnd = new GtkWindow();

Criando um novo widget window é fácil como instanciar um novo objeto: a varável $wnd obtém o novo objeto definido. Se você já programou com o PHP 4 e PHP-GTK 1, você irá sentir falta do & antes do new. Isto era necessário no PHP 4, mas não deve ser mais usado no PHP 5, já que referencias são criadas automaticamente.

Exemplo 2.4. Definindo o titulo da janela

$wnd->set_title('Hello world');

Para tornar mais fácil a identificação da janela na barra de ferramentas, nós definimos o titulo: Apenas uma chamada normal a um metodo do objeto.

Exemplo 2.5. Ativando uma saída limpa

$wnd->connect_simple('destroy', array('gtk', 'main_quit'));

Esta é a primeira peça interessante de código: O sinal "destroy" é conectado com o metodo statico Gtk::main_quit. Ele basicamente diz ao GTK para sair do loop principal quando a janela é fechada/destruída. (O loop principal é explicado alguns paragrafos abaixo.)

Exemplo 2.6. Criar um label para mostrar texto

$lblHello = new GtkLabel("Just wanted to say\r\n'Hello world!'");

Como feito antes, nós criamos um novo widget. Desta vez nós queremos mostrar uma pequena quantidade de texto, e GtkLabel é perfeito para esta tarefa.

Exemplo 2.7. Adicionar o label na janela

$wnd->add($lblHello);

Agora nós dizemos a janela, que o label deve ser adicionado diretamente a ela.

Exemplo 2.8. Tornar a janela visível

$wnd->show_all();

Até agora, você não viu nada na sua janela. Para fazer a janela visível, você precisará chamar a função show() . Isto iria fazer a janela visível, mas não o label - nós teriamos que chamar show() no label também. Isto é incoveniente se você tem vários widgets como botões, caixas de verificação e outros na janela: show_all() torna a janela e todos os seus widgets filhos visíveis.

Exemplo 2.9. Começar o loop principal

Gtk::main();

Após tudo estar definido, nós devemos nos certificar que a janela permanece aberta e responde a interação do usuário. Um script PHP normal iria terminar e parar neste ponto, mas nós queremos que ele continue sendo executado: Para isto, o loop principal do GTK precisa ser iniciado. Ele mantém a aplicação sendo executada e esperando por eventos do usuário. Se um evento ocorre, ele delega ele para os callbacks correspondentes.

Próxima leitura

Agora que você criou a sua primeira aplicação em PHP-GTK 2, você provavelmente quer criar layouts mais complexos. Para aprender o básico, dê uma olhada no Tutorial de Empacotamento.