7 июня 2009 г.

Блоки с изменяющимися размерами.

В PHP-GTK имеется два класса виджетов с панелями регулируемого размера - это вертикальный GtkVPaned и горизонтальный GtkHPaned.



Каждый из этих виджетов представляет из себя некий блок, состоящий их двух панелей. Между ними располагается специальный разделитель, схватив который можно изменить размер панелей.
Для добавления содержимого в панель существует два метода - add1() и add2(). Первой считается левая или верхняя панель, в зависимости от вида блока.
В нашей программе базовым будет горизонтальный блок, в правую часть которого мы поместим вертикальный.

По умолчанию рамки отсутствуют, как видно в правой верхней панели. Для их создания поместим всё содержимое панели в GtkFrame и методом set_shadow_type() установим рамку. С полным списком рамок можете ознакомиться здесь.

Полный код программы:
<?php
 
$window = new GtkWindow();
$window->set_size_request(400, 200);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
 
$hpaned = new GtkHPaned;
$vpaned = new GtkVPaned;
 
$left = new GtkFrame;
$left->set_shadow_type(Gtk::SHADOW_IN);
// Размеры панели можно указать уже известным вам способом
$left->set_size_request(200, -1);
$left->add(new GtkLabel('Левая панель'));
 
// У данной панели не будет рамки
$right_top = new GtkLabel('Правая верхняя панель');
 
$right_bottom = new GtkFrame;
$right_bottom->set_shadow_type(Gtk::SHADOW_IN);
$right_bottom->add(new GtkLabel('Правая нижняя панель'));
 
$vpaned->add1($right_top);
$vpaned->add2($right_bottom);
 
$hpaned->add1($left);
$hpaned->add2($vpaned);
 
$window->add($hpaned);
$window->show_all();
Gtk::main();
 
?>
 

Комментариев нет: