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


$window = &new GtkWlndow(); $window->set_border_width(10); $window->connect('destroy','quit_routine' );

Следующие несколько строк относятся к графическому элементу кнопки. В PHP-GTK, если передать строковый параметр в экземпляр GtkButton во время его создания, то созданная кнопка будет содержать метку с указан­ным текстом. Если опустить этот параметр, то дочерний графический эле­мент GtkLabel не будет создан.

При соединении сигнала переменная $buttor передается в качестве первого параметра по умолчанию функции обратного вызова hello(), а пользователь­ский параметр $window - в качестве второго параметра функции обратного вызова.

Затем мы вызываем метод add(), унаследованный у класса GtkContainer, что­бы добавить кнопку в окно:

Sbutton = &new GtkButton( "Hello World! '); $button->connect('clicked', 'hello', $window); $window->add($button);

Следующий блок создает всплывающую подсказку, появляющуюся, когда курсор мыши оказывается над кнопкой. Здесь снова первая строка занима­ется созданием объекта. Затем мы вызываем метод set_tip() только что соз­данного экземпляра GtkTooltips, который связывает подсказку с кнопкой и устанавливает текст. Третий параметр служит для задания строки, иденти­фицирующей подсказку, но поскольку в этом приложении она у нас одна, то его можно оставить равным null. Наконец, активизируем подсказку:

$tooltip = knew GtkTooltips();

$tooltip->set_tip($button, 'Prints "Hello World!" and vanishes', null); $tooltip->enable() ;

Здесь мы вызываем из окна метод GtkWidget show_all(). Он показывает вызы­вающий объект и его дочерние элементы, если они есть:

$window->show_all();

Наконец, запускаем главный цикл:

gtk;:main();

При запуске сценария отображается маленький аккуратный интерфейс, приведенный ниже (рис. 20.1):

Клиент приложения библиотеки

Помимо веб-интерфейса к приложению библиотеки, разработанному в гла­вах 17 и 18, создадим с помощью PHP-GTK простой интерфейс клиента. Он предоставит нам аналогичную функциональность:

• Предоставить пользователю экран для ввода имени пользователя и паро­ля для входа в приложение

♦ Вывести пользователю форму для ввода описания книги. Детали описания нужны для поиска в базе данных и отображения результатов в виде списка

Если вы еще не установили одну из баз данных, о которых шла речь выше, наверное, это надо сделать сейчас.

Часто полезно разбить приложение PHP-GTK на функции, которые загру­жают окна или выполняют другие специфические задачи. Благодаря этому программа состоит из нескольких отдельных блоков, а не из одного длинно­го участка кода.