23 #include <gtkmm/accelmap.h>
24 #include <gdk/gdkkeysyms.h>
25 #include <gtk/gtkaccelmap.h>
34 cout <<
"This is the " << txt <<
" item\n";
38 make_action (Glib::RefPtr<ActionGroup> group,
string name,
string label, RefPtr<AccelGroup> accels, slot<void> sl, guint key, Gdk::ModifierType mods)
40 Glib::RefPtr<Action> act;
42 act = Action::create (name, label);
44 AccelMap::add_entry (act->get_accel_path(), key, mods);
46 act->set_accel_group (accels);
48 cerr <<
"action " << name <<
" has path " << act->get_accel_path() << endl;
56 Glib::RefPtr<Action> act;
58 act = Action::create (name, label);
61 cerr <<
"action " << name <<
" has path " << act->get_accel_path() << endl;
70 bool known = gtk_accel_map_lookup_entry (accel_path.c_str(), &gkey);
73 key = AccelKey (gkey.accel_key, Gdk::ModifierType (gkey.accel_mods));
75 key = AccelKey (GDK_VoidSymbol, Gdk::ModifierType (0));
84 RefPtr<ActionGroup> grp = ActionGroup::create (src->get_name());
86 ListHandle<RefPtr<Action> > group_actions = src->get_actions();
88 for (ListHandle<RefPtr<Action> >::iterator a = group_actions.begin(); a != group_actions.end(); ++a) {
89 RefPtr<Action> act = Action::create ((*a)->get_name(), (*a)->property_label());
97 main (
int argc,
char* argv[])
99 Main app (argc, argv);
100 Window
hidden (WINDOW_TOPLEVEL);
101 Window window (WINDOW_TOPLEVEL);
102 Window other_window (WINDOW_TOPLEVEL);
103 Button button (
"click me for baz");
104 Button other_button (
"click me for baz");
108 Glib::RefPtr<ActionGroup> actions;
109 Glib::RefPtr<ActionGroup> other_actions;
110 Glib::RefPtr<ActionGroup> shared_actions;
111 Glib::RefPtr<UIManager> uimanager;
112 Glib::RefPtr<UIManager> other_uimanager;
113 Glib::RefPtr<UIManager> shared_uimanager;
115 window.set_name (
"Editor");
116 window.set_title (
"Editor");
118 other_window.set_name (
"Other");
119 other_window.set_title (
"Other");
121 uimanager = UIManager::create();
122 other_uimanager = UIManager::create();
123 shared_uimanager = UIManager::create();
125 actions = ActionGroup::create(
"MyActions");
126 other_actions = ActionGroup::create(
"OtherActions");
127 shared_actions = ActionGroup::create(
"SharedActions");
129 uimanager->add_ui_from_file (
"mtest.menus");
130 other_uimanager->add_ui_from_file (
"mtest_other.menus");
134 RefPtr<AccelGroup> accels = hidden.get_accel_group();
137 make_action (actions,
"Foo",
"foo", accels, sigc::bind (sigc::ptr_fun (
printit),
"foo"), GDK_p, Gdk::ModifierType (0));
140 make_action (other_actions,
"OFoo",
"foo", accels, sigc::bind (sigc::ptr_fun (
printit),
"o-foo"), GDK_p, Gdk::ModifierType (0));
142 make_action (shared_actions,
"Bar",
"bar", accels, sigc::bind (sigc::ptr_fun (
printit),
"barshared"), GDK_p, Gdk::CONTROL_MASK);
143 RefPtr<Action> act =
make_action (shared_actions,
"Baz",
"baz", accels, sigc::bind (sigc::ptr_fun (
printit),
"baz-shared"), GDK_p, Gdk::SHIFT_MASK);
145 act->connect_proxy (button);
146 act->connect_proxy (other_button);
148 uimanager->insert_action_group (
copy_actions (actions));
149 uimanager->insert_action_group (
copy_actions (shared_actions));
150 other_uimanager->insert_action_group (
copy_actions (other_actions));
151 other_uimanager->insert_action_group (
copy_actions (shared_actions));
153 other_window.add_accel_group (accels);
158 m =
dynamic_cast<MenuBar*
>(other_uimanager->get_widget (
"/OTop"));
160 other_vpacker.pack_start (*m);
161 other_vpacker.pack_start (other_button);
163 other_window.add (other_vpacker);
164 other_window.show_all ();
166 m =
dynamic_cast<MenuBar*
>(uimanager->get_widget (
"/Top"));
168 vpacker.pack_start (*m);
169 vpacker.pack_start (button);
171 window.add (vpacker);
174 Settings::get_default()->property_gtk_can_change_accels() =
true;
176 AccelMap::save (
"mtest.bindings");
Glib::RefPtr< Action > make_action(Glib::RefPtr< ActionGroup > group, string name, string label, RefPtr< AccelGroup > accels, slot< void > sl, guint key, Gdk::ModifierType mods)
bool lookup_entry(const string accel_path, Gtk::AccelKey &key)
LIBARDOUR_API PBD::PropertyDescriptor< bool > hidden
RefPtr< ActionGroup > copy_actions(const RefPtr< ActionGroup > src)
int main(int argc, char *argv[])