Библиотека сайта rus-linux.net
Программирование с использованием gtkmm 3. Палитра инструментов (ToolPalette)
Оригинал: Programming with gtkmm 3Авторы: Murray Cumming, Bernhard Rieder, Jonathon Jongsma, Ole Laursen, Marko Anastasov, Daniel Elstner, Chris Vine, David King, Pedro Ferreira, Kjell Ahlstedt
Дата публикации: 15 Октября 2013 г.
Перевод: А.Панин
Дата перевода: 15 марта 2014 г.
Палитра инструментов (реализованная в рамках класса Gtk::ToolPalette
) аналогична панели инструментов, но содержит сетку из элементов, разделенных на группы. Пользователь может скрыть или раскрыть каждую из групп. Как и в панели инструментов, элементы могут использовать только иконки, только текст или иконки с текстом.
Элементы палитры инструментов могут быть захвачены или просто активированы. Например, пользователь может переместить объекты на канву для создания новых элементов на ней. Или же пользователь может нажать на элемент для активации определенного размера кисти в приложении для рисования.
Gtk::ToolItemGroup
) могут добавляться в палитру инструментов с помощью метода Gtk::Container::add()
базового класса, например, следующим образом:
Gtk::ToolItemGroup* group_brushes = Gtk::manage(new Gtk::ToolItemGroup("Кисти")); m_ToolPalette.add(*group_brushes);
Gtk::ToolItem
) могут быть добавлены в группу. Например, следующим образом:
Gtk::ToolButton* button = Gtk::manage(new Gtk::ToolButton(icon, "Большая")); button->set_tooltip_text("Большая кисть"); group_brushes->insert(*button);
Впоследствии вы сможете установить обработчик для сигнала "clicked"
элемента палитры инструментов на основе класса Gtk::ToolItem
. Альтернативным решением является активация возможности переноса элемента на другой виджет, выполняемая с использованием метода Gtk::ToolPalette::add_drag_dest()
с последующим вызовом метода Gtk::ToolPalette::get_drag_item()
в рамках обработчика сигнала "drag_data_received"
другого виджета.
Справочная информация для виджета палитры инструментов (ToolPalette)
Справочная информация для группы элементов палитры инструментов (ToolItemGroup)
Справочная информация для элемента палитры инструментов (ToolItem)
13.1. Захват и перемещение элементов палитры инструментов
Для активации возможности перемещения элементов или групп палитры инструментов на определенный целевой виджет следует вызывать метод add_drag_dest()
. После этого вы можете использовать метод get_drag_item()
для установления того, какой элемент палитры инструментов (представленный экземпляром класса Gtk::ToolItem
) или группа палитры инструментов (представленная экземпляром класса Gtk::ToolItemGroup
) была перемещена. Вы можете использовать оператор преобразования типа данных dynamic_cast
для установления того, является ли объект элементом или группой палитры инструментов. Например, вы можете использовать его в своем обработчике сигнала "drag_data_received"
с целью добавления перенесенного элемента палитры инструментов или показа подходящей иконки в процессе перемещения.
Обратитесь к главе "Механизм захвата и перемещения (Drag and Drop)" для получения общих рекомендаций по работе с механизмом захвата и перемещения элементов пользовательских интерфейсов, созданных с помощью gtkmm.
13.2. Пример использования палитры инструментов
В данном примере в окно добавляется виджет палитры инструментов (ToolPalette
) и область для рисования (DrawingArea
), которые позволяют пользователю захватывать иконки из палитры инструментов и размещать их в области для рисования. Палитра инструментов содержит несколько групп элементов. Раскрывающиеся списки позволяют пользователю изменять стиль и ориентацию палитры инструментов.
Рисунок 13-1: Палитра инструментов (Tool Palette)
Файл: examplewindow.h
(Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл: canvas.h
(Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл: canvas.cc
(Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл: examplewindow.cc
(Для использования совместно с gtkmm 3, а не с gtkmm 2)
Файл: main.cc
(Для использования совместно с gtkmm 3, а не с gtkmm 2)
Следующий раздел : 14. Объекты установки диапазонов значений (Adjustments).