Аргерих Л. О языке РНР. Часть 4. Страница 128


Когда происходит событие, имеющее отношение к графическому элементу, управление переходит к функции, обрабатывающей это событие, с помощью сигнала, генерируемого графическим элементом. Этот сигнал и функция, им вызываемая, могут быть внутренними для 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();