4 августа 2009 г.

Панель инструментов. Дополнительные кнопки

Панель инструментов

Помимо обычных кнопок на панель инструментов можно добавить радио-кнопки, кнопки-переключатели, а также, кнопки с выпадающим списком.



  • Радио-кнопки создаются конструктором класса 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();
 
?>

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