Table of Contents
There are specific APIs for menus and toolbars, but you should usually deal
with them together, creating Gio::SimpleAction
s that
you can refer to in both menus and toolbars. In this way you can handle
activation of the action instead of responding to the menu and toolbar items
separately. And you can enable or disable both the menu and toolbar item via
the action. Gtk::Builder
can create menus and toolbars.
This involves the use of the Gio::SimpleActionGroup
,
Gio::SimpleAction
and Gtk::Builder
classes, all of which should be instantiated via their create()
methods, which return RefPtr
s.
Gtk::ActionGroup
, Gtk::Action
with
its subclasses and Gtk::UIManager
has been an alternative.
These classes are deprecated from gtkmm version 3.22 and should not be used in
newly-written code.
First create the Gio::SimpleAction
s and add them to a
Gio::SimpleActionGroup
, with
Gio::ActionMap::add_action()
.
(Gio::ActionMap
is a base class of
Gio::SimpleActionGroup
.) Then add the action group to
your window with Gtk::Widget::insert_action_group()
.
The arguments to add_action()
specify the action's
name, which is used in the menu items and toolbar buttons. You can also specify
a signal handler when calling add_action()
. This signal
handler will be called when the action is activated via either a menu item or
a toolbar button.
For instance:
m_refActionGroup = Gio::SimpleActionGroup::create(); m_refActionGroup->add_action("new", sigc::mem_fun(*this, &ExampleWindow::on_action_file_new)); m_refActionGroup->add_action("open", sigc::mem_fun(*this, &ExampleWindow::on_action_file_open)); m_refActionGroup->add_action("quit", sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit)); insert_action_group("example", m_refActionGroup);
If you use an Gtk::ApplicationWindow
, you don't have to
create your own action group. Gio::ActionGroup
and
Gio::ActionMap
are base classes of
Gtk::ApplicationWindow
.