Forum und email

Manipulação de Sinais

Introdução

Este tutorial irá lidar com o conceito de manipulação de sinais no PHP-GTK 2 o que é importante e fundamental, já que é isto que faz a sua aplicação "tick"!.

Você deve ter notado que ao final de todos os programas PHP-GTK 2 que nós escrevemos tem este comando:

Gtk::main();
O que isso significa é que um laço infinito é iniciado o qual apenas espera para algo acontecer. Obiviamente você não quer apenas criar, mastras os widgets e sair. Este laço é o que impede isso de acontecer e é a chave para a execução da sua aplicação. Resumindo, o comando:
Gtk::main_quit();
sai deste laço. Nós usamos isto em qualquer lugar que nós realmente queramos parar a nossa aplicação.

Primeiramente, será útil definir alguns termos que nós vamos usar feqüentemente.

  • Ação: Isto é alguma coisa que acontece. Por exemplo, o usuário clica em um botão conta como uma ação.
  • Sinal: Esta é uma notificação gerada quando um evento acontece. Esta é a maneira para a sua aplicação saber que uma ação recém ocorreu.
  • Callback: Uma função ou metodo que é invocado por outro pedaço de código.
  • Manipulador de Sinal: um callback que é chamado em resposta a um sinal ser emitido. Aqui é onde você coloca o código que irá manipular o sinal.
  • Eventos: estes são um feixe continuo de impulsos que comunica as mudanças de baixo nível no ambiente para o sistema de gerenciamento de janelas.

A manipulação de sinais basicamente consiste em conectar um sinal ao seu manipulador de sinal, e claro, escrever o manipulador de sinal em sí. O trabalho de gerar um sinal sempre que uma ação ocorrer é feito pelo PHP-GTK 2. Outra coisa para notar é que a geração do sinal não garante que o susário tenha realizado alguma ação. è possível gerar manualmente um sinal, e o PHP-GTK 2 gera sinais internamente a toda a hora.

Uma situação comum de um sinal ser gerado internamente e usado é quando GtkAdjustment emite "value-changed" para um GtkProgressBar usa-lo. Então, alguns sinais tem um manipulador padrão já embutido, o qual será executado se você conectar ou não manualmente um manipulador de sinal para este sinal.

A maioria das vezes entretanto, se você quer que algo aconteça quando um sinal é gerado, você precisa criar um manipulador de sinal para ele.