Página Inicial > Diversos, Gtk/Gdk > Utilizando timers no PHP-GTK

Utilizando timers no PHP-GTK

Boas pessoal ;)

bom, estou aqui novamente para dar mais uma dica, e desta vez bem legal: Adicionando timers à uma aplicação. Um timer é uma função que fica sendo executada de tempo em tempo, sem "travar" o resto dela. Isso pode ser muito util quando se precisa enviar comandos de tempo em tempo, como o PING no protocolo IRC, ou verificar uma caixa de email de tempo em tempo, e muitas outras coisas.

O método que faz esta maravilha, é o timeout_add() da classe Gtk. Segue um exemplo de como utiliza-la:

$window  = new GtkWindow();
 
// Função do timer
function timer1() {
   print("ok\n");
   return true;
}

// Adiciona o timer, com delay de 1 segundo
Gtk::timeout_add(1000, 'timer1');

// Cria o sinal ao destruir
$window->connect_simple('destroy', array('gtk', 'main_quit'));

// Inicia a aplicação
$window->show_all();
Gtk::main();
 

Podemos remover um timer utilizando o método timeout_remove():

$window  = new GtkWindow();
$button  = new GtkButton('Iniciar');

// Função do timer
function timer1() {
   print("ok\n");
   return true;
}

// Callback do click do botão
function buttonClick() {
   global $timer1, $button;
   
   // Verifica se o timer esta ativo
   if($timer1 != NULL) {
   
      // Remove o timer
      Gtk::timeout_remove($timer1);
      $timer1 = NULL;
      $button->set_label('Iniciar');
   } else {
   
      // Adiciona o timer, com delay de 1 segundo
      $timer1 = Gtk::timeout_add(1000, 'timer1');
      $button->set_label('Parar');
   }
}

// Cria o sinal ao destruir
$window->connect_simple('destroy', array('gtk', 'main_quit'));
$button->connect_simple('clicked', 'buttonClick');

// Inicia a aplicação
$window->add($button);
$window->show_all();
Gtk::main();
 

Bom pessoal, essa é uma das coisas que pouco se comenta, e que é muito util quando se precisa executar funções de tempo em tempo.

Até a proxima dica ;)

Categories: Diversos, Gtk/Gdk Tags: , , ,
  1. Wendell "Thejesus"
    26, outubro, 2008 em 23:29 | #1

    Taí uma coisa útil!

  2. 24, julho, 2009 em 20:57 | #2

    Eu preciso fazer urgente um cronometro regressivo em tempo real. Queria saber se poderei fazer isso, em PHP-GTK.

  3. 30, julho, 2009 em 09:35 | #3

    Opa josé.

    Então, pode sim, usa uma variavel global, e dentro da função do timer, vc incrementa +1 (segundo)

    < ?php
        $segundos = 0;
    
        function cro()
        {
            global $segundos;
            $segundos++;
        }
    
        $timer1 = Gtk::timeout_add(1000, 'cro');
    ?>
    

    Assim, vc sempre terá a variavel $segundos com o tempo de execução do seu aplicativo

  1. Nenhum trackback ainda.