На этом скриншоте представлены все шесть типов расположения кнопок в горизонтальном контейнере.
- Gtk::BUTTONBOX_DEFAULT_STYLE - стиль по умолчанию, соответствует Gtk::BUTTONBOX_EDGE
- Gtk::BUTTONBOX_SPREAD - равные расстояния между кнопками, такое же расстояние между первой/последней кнопкой и границей виджета
- Gtk::BUTTONBOX_EDGE - первая/последняя кнопки прижимаются к границам виджета, остальные располагаются равноудалённо друг от друга
- Gtk::BUTTONBOX_START - все кнопки прижимаются к левой/верхней границе виджета
- Gtk::BUTTONBOX_END - все кнопки прижимаются к правой/нижней границе виджета
- Gtk::BUTTONBOX_CENTER - кнопки располагаются по центру виджета
Тип размещения устанавливается методом set_layout(), а добавление - методом add(). Для вертикального контейнера все действия аналогичны.
Полный код программы:
<?php
$window = new GtkWindow();
$window->set_position(Gtk::WIN_POS_CENTER);
$window->set_size_request(450, -1);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
$hbox_main = new GtkHBox();
$hbox_main->pack_start($vbox = new GtkVBox(), TRUE, TRUE, 5);
$array = array(
'Default Style' => Gtk::BUTTONBOX_DEFAULT_STYLE,
'Spread' => Gtk::BUTTONBOX_SPREAD,
'Edge' => Gtk::BUTTONBOX_EDGE,
'Start' => Gtk::BUTTONBOX_START,
'End' => Gtk::BUTTONBOX_END,
'Center' => Gtk::BUTTONBOX_CENTER
);
foreach ($array as $key => $value)
{
$box = new GtkHButtonBox();
$box->set_layout($value);
$box->add(GtkButton::new_from_stock(Gtk::STOCK_YES));
$box->add(GtkButton::new_from_stock(Gtk::STOCK_CANCEL));
$box->add(GtkButton::new_from_stock(Gtk::STOCK_NO));
$frame = new GtkFrame($key);
$frame->set_shadow_type(Gtk::SHADOW_IN);
$frame->add($box);
$vbox->pack_start($frame, FALSE, FALSE, 5);
}
$window->add($hbox_main);
$window->show_all();
Gtk::main();
?>
4 комментария:
А если кнопки не входят по ширине можно ли реализовать прокрутку кнопок, чтобы увидеть скрытую с одной стороны кнопку ценой сокрытия кнопки с другой стороны?
Я недавно встретил необходимость реализовать подобный функционал, на пока не знаю, как это сделать. Но такая возможность имеется, пример служит файловый менеджер Nautilus.
http://nautilus.sourcearchive.com/documentation/2.8.2-2/nautilus-switchable-navigation-bar_8c-source.html
в строке 222 комментарий
помоему под ним есть реализация сокращений в хлебных крошках, может ошибаюсь, но пробовал разобраться, что-то не получается, с си не знаком.
Существуют ли учебники или справочники на русском по php-gtk?
Я попробую покопаться поглубже в этом вопросе, если что-то найду - напишу соответствующую статью.
По поводу учебника. Насколько мне известно, мой блог является единственным в русскоязычном сегменте интернета на тему PHP-GTK.
Отправить комментарий