Когда происходит событие, имеющее отношение к графическому элементу, управление переходит к функции, обрабатывающей это событие, с помощью сигнала, генерируемого графическим элементом. Этот сигнал и функция, им вызываемая, могут быть внутренними для GTK, например изменение цвета при входе курсора мыши в чувствительную для графического элемента область экрана, либо сигнал может быть связан с функцией, написанной программистом PHP-GTK.
Замечание: это не те же сигналы, что системные сигналы UNIX, и реализованы без них, но терминология почти идентична.
Для того чтобы кнопка выполняла действие, установим связь сигнала с соответствующей функцией, известной как обработчик сигнала (signal handler) или функция обратного вызова (callback function). Это достигается с помощью метода connect( ):
$button->connect('clicked','my_function');
Первым параметром метода connect () является имя сигнала, на который надо ответить, в данном случае сигнала clicked. Второй параметр - это функция, которая будет вызвана при подаче сигнала. Метод connect () передает вызывающий объект функции обратного вызова в качестве первого параметра функции. Можно добавить дополнительные параметры в соединение и функцию обратного вызова, чтобы передать другие объекты. Количество дополнительных параметров, которые можно передать таким способом, не ограничено.
function myFunction($button) {
print("The button was clicked\n");
}
Освоившись с этими понятиями, мы можем определить жизненный цикл графического элемента. Он состоит из пяти основных частей.
Создание объекта
Общий синтаксис такой:
$widget - &new GtkWidget(pararoeters);
Обычно графический элемент определяется на этой стадии путем установки его размера, цвета, текста или других необходимых свойств.
Соединение с сигналом
На этом этапе устанавливаются функции обратного вызова. Синтаксис следующий:
$widget->connect("signal-name", "functionName");
Здесь signal-name - предопределенное состояние, например clicked, a functi- onName является именем функции обратного вызова.
Развертывание
Затем мы описываем связь графического элемента с другими графическими элементами. В PHP-GTK это осуществляется с помощью синтаксиса:
$container->add($widget);
Например:
$window->add($button);
Отображение
На этом шаге описывается, будет ли графический элемент показан пользователю. Он начинается с вызова:
$widget->show();
и заканчивается:
$widget->hide();