Помимо обычных кнопок на панель инструментов можно добавить радио-кнопки, кнопки-переключатели, а также, кнопки с выпадающим списком.
- Радио-кнопки создаются конструктором класса GtkRadioToolButton. Первым параметром указывается группа кнопок (как у обычных радио-кнопок), вторым - имя элемента.
$radio_one = new GtkRadioToolButton(NULL, Gtk::STOCK_MEDIA_REWIND);
$toolbar->insert($radio_one, -1);
$radio_two = new GtkRadioToolButton($radio_one, Gtk::STOCK_MEDIA_PLAY);
$toolbar->insert($radio_two, -1);
$radio_three = new GtkRadioToolButton($radio_one, Gtk::STOCK_MEDIA_FORWARD);
$toolbar->insert($radio_three, -1); - GtkToggleToolButton отвечает за создание кнопок-переключателей (аналог обычных кнопок с сохраняемым состоянием).
$toggle = GtkToggleToolButton::new_from_stock(Gtk::STOCK_MEDIA_RECORD);
$toolbar->insert($toggle, -1); - Кнопка с выпадающим списком создаётся с помощью класса GtkMenuToolButton. Первым параметром конструктору передаётся изображение, которое будет присутствовать на кнопке, вторым - текст. Выпадающий список создаётся по аналогии с меню окна. После создания его необходимо добавить к кнопке методом set_menu().
$open = new GtkMenuToolButton(
GtkImage::new_from_stock(
Gtk::STOCK_OPEN,
Gtk::ICON_SIZE_SMALL_TOOLBAR
), 'Открыть'
);
$menu = new GtkMenu();
$menu->add(new GtkMenuItem('Файл 1'));
$menu->add(new GtkMenuItem('Файл 2'));
$menu->add(new GtkMenuItem('Файл 3'));
$menu->show_all();
$open->set_menu($menu);
$toolbar->insert($open, -1);
Полный код программы:
<?php
$window = new GtkWindow();
$window->set_position(Gtk::WIN_POS_CENTER);
$window->set_size_request(400, -1);
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
$toolbar = new GtkToolBar();
$toolbar->set_property('toolbar-style', Gtk::TOOLBAR_ICONS);
$button = GtkToolButton::new_from_stock(Gtk::STOCK_OPEN);
$toolbar->insert($button, -1);
$button = GtkToolButton::new_from_stock(Gtk::STOCK_SAVE);
$toolbar->insert($button, -1);
$toolbar->insert(new GtkSeparatorToolItem(), -1);
$radio_one = new GtkRadioToolButton(NULL, Gtk::STOCK_MEDIA_REWIND);
$toolbar->insert($radio_one, -1);
$radio_two = new GtkRadioToolButton($radio_one, Gtk::STOCK_MEDIA_PLAY);
$toolbar->insert($radio_two, -1);
$radio_three = new GtkRadioToolButton($radio_one, Gtk::STOCK_MEDIA_FORWARD);
$toolbar->insert($radio_three, -1);
$toolbar->insert(new GtkSeparatorToolItem(), -1);
$toggle = GtkToggleToolButton::new_from_stock(Gtk::STOCK_MEDIA_RECORD);
$toolbar->insert($toggle, -1);
$toolbar->insert(new GtkSeparatorToolItem(), -1);
$open = new GtkMenuToolButton(
GtkImage::new_from_stock(
Gtk::STOCK_OPEN,
Gtk::ICON_SIZE_SMALL_TOOLBAR
), 'Открыть'
);
$menu = new GtkMenu();
$menu->add(new GtkMenuItem('Файл 1'));
$menu->add(new GtkMenuItem('Файл 2'));
$menu->add(new GtkMenuItem('Файл 3'));
$menu->show_all();
$open->set_menu($menu);
$toolbar->insert($open, -1);
$window->add($toolbar);
$window->show_all();
Gtk::main();
?>
Комментариев нет:
Отправить комментарий