30 июля 2009 г.

Вкладки. Часть 2



Для того, чтобы при нажатии на панель вкладок отобразилось контекстное меню необходимо вызвать метод popup_enable(). Причём генерация списка всех вкладок для этого меню произойдёт автоматически. При щелчке по пункту меню откроется соответствующая вкладка.

Также в сегодняшней программе имеется возможность удаления вкладок. Для этого применяется метод remove_page(), которому передаётся номер вкладки, которую необходимо закрыть. Нумерация вкладок начинается с нуля.

Полный код программы:

<?php
 
$window = new GtkWindow();
$window->set_size_request(300, 100);
$window->set_position(Gtk::WIN_POS_CENTER);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
 
$ntb = new GtkNotebook();
$ntb->popup_enable();
 
$table = new GtkTable();
 
$table->attach(new GtkLabel('Вкладка №:'), 0, 1, 0, 1);
$table->attach($spin = GtkSpinButton::new_with_range(1, 5, 1), 1, 2, 0, 1);
$table->attach($button = new GtkButton('Удалить'), 2, 3, 0, 1, Gtk::EXPAND, Gtk::EXPAND);
$button->connect_simple('clicked', 'remove_page', $spin);
 
$ntb->append_page($table, new GtkLabel('1'));
$ntb->append_page(new GtkLabel('Вторая страница'), new GtkLabel('2'));
$ntb->append_page(new GtkLabel('Третья страница'), new GtkLabel('3'));
$ntb->append_page(new GtkLabel('Четвёртая страница'), new GtkLabel('4'));
$ntb->append_page(new GtkLabel('Пятая страница'), new GtkLabel('5'));
$ntb->append_page(new GtkLabel('Шестая страница'), new GtkLabel('6'));
 
$window->add($ntb);
$window->show_all();
Gtk::main();
 
function remove_page($spin)
{
global $ntb;
 
$value = $spin->get_value();
 
$ntb->remove_page($value);
}
 
?>

2 комментария:

nestor yanchuk комментирует...

Как динамически добавить вкладку?Удалить получилось, добавит нет.

Shecspi комментирует...

Для добавления вкладок используйте метод insert_page(). Первые два параметра аналогичны append_page(), а в третьем указывается позиция, занимаемая новой вкладкой.